C# 首先在EF数据库中自定义属性
你好 我使用database first aproach从数据库创建了一个EF模型, 并为EF生成的实体类添加了几个只读属性,这些属性不在数据库中。 每次我更新模型时,都会从新表中添加数据 我丢失了创建的属性,因此必须重新创建它们 例如,在数据库中,我有属性isFemale,但在我的类中,我创建了属性isFemaleC# 首先在EF数据库中自定义属性,c#,entity-framework,ef-database-first,C#,Entity Framework,Ef Database First,你好 我使用database first aproach从数据库创建了一个EF模型, 并为EF生成的实体类添加了几个只读属性,这些属性不在数据库中。 每次我更新模型时,都会从新表中添加数据 我丢失了创建的属性,因此必须重新创建它们 例如,在数据库中,我有属性isFemale,但在我的类中,我创建了属性isFemale public string Gender { get { if(isFemale) return "female"; e
public string Gender
{
get
{
if(isFemale) return "female";
else return "male";
}
}
我的问题是,有没有一种方法可以从数据库中更新模型,而保留由我生成的属性
谢谢大家! 在另一个分部类而不是生成的类上添加属性。例如,如果生成的类是Person类型,请在同一项目中使用相同的命名空间定义另一个分部类:
public partial class Person
{
public string Gender
{
get
{
if(isFemale) return "female";
else return "male";
}
}
}
使用分部类可以解决您的问题,但是:
- 必须在同一部件中定义分部类的所有零件
- 部分零件中的属性不会持久化到数据库中
- 不能在linq to实体中使用部分零件的特性 询问
您可以将您的类划分为部分类,并将其分为两个文件,这是我首先在数据库中使用它的方式
public partial class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public partial class Person
{
public string FullName {
get
{
return FirstName + " " + LastName;
}
}
}
哎哟,Richards没有回答这个问题。这个问题帮助更大,因为可以看出,你可以创建并重复你需要的课程。谢谢。可能是重复的嗨,Richard谢谢你的回答!我想更进一步,覆盖EF创建的属性。可能吗?例如,我在数据库中有一个字符串BankAccount字段,作为在接受空值的实体类中生成的结果。我想覆盖它,如果值为null,则返回空字符串。公共字符串BankAccount{get{if(_BankAccount==null)返回“”;else返回_BankAccount}。亲切的问候!不能以这种方式重写属性。您需要像现在一样使用单独的属性,或者使用函数或扩展方法。“读取更多”链接指向当前线程。正确的链接是