1

我有两个数据库表:

顾客

  • 客户 ID (PK)
  • 姓名
  • ...

客户设置

  • 客户 ID (PK)
  • 设置1
  • 设置2
  • ...

是否可以使用代码优先来拥有这些类?如果是这样,流畅的映射是什么?

public class Customer
{
    public int CustomerId { get; set; }
    public int Name { get; set; }
    public CustomerSetting CustomerSetting { get; set; }
}

public class CustomerSetting
{
    public int CustomerId { get; set; }
    public int Setting1 { get; set; }
    public int Setting2 { get; set; }
    public Customer Customer { get; set; }
}

我个人不喜欢一对一的表。毕竟,为什么不直接将设置列添加到客户表中呢?不幸的是,这是我需要开发的。对于这种情况,我无法计算出正确的代码优先映射。谢谢你的帮助。

4

2 回答 2

0

您的模型类是正确的,如果您愿意,可以将其添加到模型构建器中以指定哪个表是“主表”:

.Entity<Customer>()
.HasOptional(c => c.CustomerSetting)
.WithRequired(u => u.Customer);
于 2013-06-18T20:03:35.687 回答
0

如果您首先要编写代码并希望同时拥有 Customer 和 CustomerSettings 类,但两者只有一个表,正如您的帖子所建议的那样,我会使用复杂类型。在这里看一个很好的例子:

http://weblogs.asp.net/manavi/archive/2010/12/11/entity-association-mapping-with-code-first-part-1-one-to-one-associations.aspx

所以,你的对象模型应该是这样的(我没有测试过):

public class Customer
{
    public Customer()
    {
        CustomerSetting= new CustomerSetting();
    }

    public int CustomerId { get; set; }
    public int Name { get; set; }
    public CustomerSetting CustomerSetting { get; set; }
}

[ComplexType]
public class CustomerSetting
{
    public int CustomerId { get; set; }
    public int Setting1 { get; set; }
    public int Setting2 { get; set; }
    public Customer Customer { get; set; }
}
于 2013-06-18T16:12:29.043 回答