EF может работать с объектами, имеющими частный/защищенный конструкторы.
Так давайте этот контекст пример:
public class MyEntity
{
protected MyEntity() { }
public int Id { get; set; }
public string Name { get; set; }
}
public class MyContext : DbContext
{
public DbSet<MyEntity> MyEntities { get; set; }
}
Затем создавая объект с new MyEntity()
приведет к ошибке компиляции.
Но вы все же можете создать entites через EF с помощью DbSet.CreatemyContext.MyEntities.Create();
, а все остальные операции на MyEntity
будут работать, например. запросы и обновления и т. д., как ожидалось.
И, конечно, вы также можете иметь статический фабричный метод на MyEntity
, который управляет созданием объекта
public class MyEntity
{
//...
public static MyEntity MyCreate()
{
return new MyEntity();
}
}