Существует также несколько других опций.
Первый - изменить настройку свойства в файле сопоставления с:
this.Property(t => t.Name)
.HasMaxLength(152);
на:
this.Property(t => t.Name)
.HasMaxLength(152)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);
Это почти то же самое, что и решение Same Huggill, за исключением того, что эта конфигурация сохраняется в отображении, а не в модели.Я чувствую, что это немного лучше, так как класс отображения уже содержит код, который сообщает Entity Framework, как загружать этот тип сущности, поэтому знание о том, что поле вычисляется, принадлежит ему.
Другой вариант - NotMappedAttribute
который может применяться к отдельным свойствам сущности, например так:
public class User
{
...
[NotMapped]
public string Name
{
get;
set;
}
...
}
Это полезно для случаев, когда сущность содержит свойства, которые не заполняются из базы данных, но она должна быть одинаково полезной в сценарии, с которымOP, т. Е. EF не будет пытаться вставить значение в свойство, помеченное NotMappedAttribute
, поэтому вставка должна работать.