Я использую EF4, и у меня есть объекты POCO с прокси из моей структуры базы данных.У меня есть POCO (объект), который имеет много связей с другими объектами.
Я создал глубокую копию объекта, используя DataContractSerializer и BinaryFormatter, и позвольте ему вызвать его clonedObject.
функция, используемая для клонированияis:
public T CloneProxy<T>(T source)
{
var dcs = new System.Runtime.Serialization
.DataContractSerializer(typeof(T));
string filePath = "Initiative.txt";
using (FileStream file = new FileStream(filePath, FileMode.Create))
{
(new BinaryFormatter()).Serialize(file, source);
}
context.CreateProxyTypes(new Type[] { typeof(Initiative) });
using (FileStream file = new FileStream(filePath, FileMode.Open))
{
return (T)(new BinaryFormatter()).Deserialize(file);
}
}
Теперь, когда у меня есть clonedObject, как мне добавить его в контекст?как мне добавить его в базу данных?
мой объект (просто дать вам идею инициативы POCO):
Initiative
{
InitI
InitName
<collection>Comments
}
Comments
{
CommentI
<FK>InitI
}
Вот некоторые из моих действий и ошибки, которые яполучили.
cloneInit.InitI = 0;
Data_Business.RQRMComment[] arr = new Data_Business.RQRMComment[1];
arr = cloneInit.RQRMComments.ToArray();
for (int x = 0; x < arr.Length; x++) //each (var x in cloneInit.RQRMComments)
{
RQRMComment thisC = arr[x];
int y = thisC.InitI;
thisC.InitI = 0;
thisC.ID = 0;
}
Context.AddObject("Initiatives", cloneInit);
Context.SaveChanges(System.Data.Objects.SaveOptions.AcceptAllChangesAfterSave);
Ошибка:
ex = {"Невозможно добавить или присоединить объект, поскольку его EntityReference имеет значение свойства EntityKey, которое не соответствует EntityKey дляэтот объект. "}
Пожалуйста, помогите, я потратил слишком много времени на это.Спасибо.