【发布时间】:2021-02-03 17:08:04
【问题描述】:
在许多实体框架示例中,存储在数据库中的对象表示为:
public class Animal {
public int Id {get; set;}
public string Name {get; set;}
public int Age {get; set;}
//...
}
如果我想将 Enity Framework 不仅用于具有一组属性/字段和一些小方法的类,而且还想通过它将大型成熟对象的字段写入数据库,程序将使用它来工作,例如:
public class Animal : BaseObject {
public int Id {get; set;}
public string Name {get; set;}
public int Age {get; set;}
//...
public void voice() { /*...*/ }
public void func1() { /*...*/ }
public int func2() { /*...*/ }
//И т.д.
}
实体框架是设计用于处理具有复杂逻辑和继承自他人的类,还是应该创建纯粹用于处理数据库的类?
例如:
数据库类
public class DBAnimal {
public int Id {get; set;}
public string Name {get; set;}
public int Age {get; set;}
//И т.д...
}
工薪阶层
public class Animal : BaseObject {
public int Id {get; set;}
public string Name {get; set;}
public int Age {get; set;}
//И т.д...
public Animal(DBAnimal dbAnimal) {
this.Id = dbAnimal.Id;
this.Name = dbAnimal.Name;
this.Age = dbAnimal.Age;
}
public void voice() { /*...*/ }
public void func1() { /*...*/ }
public int func2() { /*...*/ }
//И т.д.
}
还有第二个问题: 如果你仍然使用Entity框架来处理成熟的类,是否有某种注解可以默认使NotMapped类的所有字段,并且Mapped类型的注解将应用于所需的字段?
【问题讨论】:
-
你可以拥有一个包含
public DBAnimal DbAnimal { get; set; }等实体的属性 -
你可以这样做,但从长远来看,你应该考虑不这样做。为数据模型提供一组单独的类允许您分离功能,因此数据模型中的更改不会破坏现有的工作和测试功能,反之亦然。
标签: c# entity-framework