1

私は2つのテーブルを持っています

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コードファーストサイドで1対1の関係を作成する方法

クラス:

    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で実際の1対1の関係を作成することはできません。これは、CompanyId列に一意のインデックスが必要であり、EFはまだ一意のインデックスをサポートしていないためです。現在、実際の1対1の関係を取得する唯一の方法は、従属テーブルの主キー(この場合Feature.Id)を主テーブルの外部キーとして使用することです。

あなたはごまかすことができます。1対多として使用するだけで(会社は多くの機能を持つことができます)、データベースに一意のインデックスがある場合、別の機能がすでに使用されている会社に関連付けようとすると例外が発生します。

于 2012-11-20T11:49:13.580 に答える