Теперь Class1 и Class2 имеют одинаковые свойства.Предназначено ли это, или это случайно, и может ли быть так, что будущие версии Class2 будут иметь свойства, которых нет в Class1?
В каркасе сущностей DbSet<...>
представляет таблицы вашей базы данных,класс в DbSet представляет одну строку в таблице.Столбцы вашей таблицы являются не виртуальными свойствами класса;виртуальные свойства представляют отношения между таблицами (один ко многим, многие ко многим, ...)
Class2 представляет таблицу базы данных.Если Class1 должен быть равен Class2, то в чем причина для Class1.Если это равенство существует только сейчас, а в будущих версиях они могут отличаться, вам придется копировать свойства по одному.
void UpdateValue(string someString, Class1 value)
{
using (var dbContext = new DbContext())
{
Class2 fetchedData = dbContext.Class2.Where(...).FirstOrDefault();
if (fetchedData != null)
{ // data exists. Update the properties
fetchedData.Prop1 = value.Prop1,
fetchedData.Prop2 = value.Prop2,
fetchedData.Prop3 = value.Prop3,
// future version of Class2 may have properties that are not updated
// no need to set state to modified. Entity Framework will detect the changes
dbContext.SaveChanges();
}
}
}
Если вы абсолютно уверены, что каждый Class2
особый тип Class1
, сейчас и в далеком будущем, вы можете подумать о том, чтобы получить Class2 из Class1:
class Class2 : Class1
{
public int Id {get; set;}
... // properties that are in Class2, but not in Class1
}
Это означает, что каждое не виртуальное свойство Class1 представлено столбцом в таблицах.с классами 2.
Деривация вам не поможет, даже если вы производите, вам придется копировать свойства одно за другим.Если вам придется делать это несколько раз, подумайте о создании функции, которая будет копировать для вас правильные значения.