1

我有两张桌子

CREATE TABLE Company (
    Id uniqueidentifier primary key not null, 
    CompanyName nvarchar(100) not null)
GO

CREATE TABLE Feature (
    Id uniqueidentifier primary key not null, 
    CompanyId uniqueidentifier not null, 
    Feature1 bit not null, 
    Feature2 bit not null)
GO

如何通过数据库上的 CompanyId 字段和 EF Code First 端与配置文件建立一对一的关系

课程:

    public class Company
{
    private Guid id = Guid.NewGuid();

    public virtual Guid Id
    {
        get { return id; }
        set { id = value; }
    }

    public virtual string CompanyName { get; set; }
}

public class Feature
{
    private Guid id = Guid.NewGuid();

    public virtual Guid Id
    {
        get { return id; }

        set { id = value; }
    }

    public virtual Company Company { get; set; }

    public virtual bool Feature1 { get; set; }

    public virtual bool Feature2 { get; set; }
}
4

1 回答 1

2

您无法在 EF 中与这些表建立真正的一对一关系,因为它需要CompanyId列上的唯一索引,而 EF 还不支持唯一索引。目前,获得真正的一对一关系的唯一方法是使用依赖表的主键(在您的情况下Feature.Id)作为主表的外键。

你可以作弊。只需将其用作一对多(公司可以有许多功能),如果您在数据库中有唯一索引,如果另一个功能尝试与已使用的公司关联,您将收到异常。

于 2012-11-20T11:49:13.580 回答