3

再会!

我已经使用数据库优先方法从数据库创建了一个 EF 模型,并将自己的几个只读属性添加到由 EF 生成的实体类中,这些属性不在数据库中。每次我更新我的模型时,我都会从我创建的新表中添加数据,因此我必须重新创建它们。

作为数据库中的示例,我有属性 isFemale 但在我的班级中我创建了

public string Gender
{
    get
    {
           if(isFemale) return "female";
           else return "male";
     }
}

我的问题是有没有办法从数据库更新模型,留下我生成的属性?

谢谢!

4

3 回答 3

5

在另一个部分类而不是生成的类上添加属性。例如,如果您生成的类是 Person 类型,请在同一个项目中使用相同的命名空间定义另一个 Partial 类:

public partial class Person
{
    public string Gender
    {
        get
        {
            if(isFemale) return "female";
            else return "male";
         }
    }
}
于 2013-09-26T07:05:35.540 回答
4

使用部分类将解决您的问题,但是:

  • 部分类的所有部分必须在同一个程序集中定义
  • 您的部分部分的属性不会持久保存到数据库中
  • 部分部分的属性不能用于 linq-to-entities 查询

阅读更多

于 2013-09-26T07:10:20.030 回答
2

您可以使您的类部分化并将其分隔在两个文件中,这就是我在 DatabaseFirst 中使用它的方式。

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;
        }
    }
}
于 2013-09-26T07:10:33.547 回答