У меня есть некоторые объекты:создать объект с идентификатором другого лица, но без связи между
class Cat
{
public long Id {get;set;}
public string Name {get;set;}
}
class Dog
{
public long Id {get;set;}
public string Name {get;set;}
}
class Log
{
public long EntityId {get;set;} // cat Id, or dog Id
public int EntityType {get;set;} //cat or dog
public string Payload {get;set;} //some information
}
Я хочу, чтобы создать новую Log
записи для каждого вставки и обновления действия. Это легко сделать в инструкции обновления, когда у меня есть кошка или собака Id.
var cat = GetCatFromDb();
//cat.Id != 0
UpdateCat(cat);
DbContext.Set<Log>().Add(new Log {EntityId = cat.Id, EntityType = 1});
Но это трудно создать новую запись журнала, когда я ввожу новый Cat
или Dog
объект, потому, что они не имеют отношения с Cat
и Log
.
var cat = new Cat{Name = "Kitty"};
//cat.Id == 0
DbContext.Set<Log>().Add(new Log {EntityId = cat.Id, EntityType = 1});
Но я не хочу, чтобы добавить свойство навигации в Cat
, Dog
или Log
класса, потому что Log это таблица системы и не имеют никакого отношения к «БИЗНЕС» объекты.
Мой пример прост, у меня есть объекты, и я могу изменить многие из них во многих местах за одну транзакцию. Итак, я хочу зарегистрировать их все. Есть ли способ получить это? Возможно, используя класс DbContext
?
Да, я могу. Мой пример прост, у меня есть объекты, и я могу изменить многие из них во многих местах в одной транзакции. Итак, мне нужно найти все из них, вызвать SaveChanges, получить идентификатор и снова вызвать SaveChanges для журнала. – Backs
Да, вы должны сделать это, чтобы найти новые вставленные идентификаторы. –
@Backs Позвольте мне знать, если у вас есть какие-либо вопросы по поводу ответа или если вы найдете его полезным :) –