0

我有以下数据库:

CREATE TABLE [dbo].[Application] (
    [ApplicationId]   INT            IDENTITY (1, 1) NOT NULL,
    [Name] NVARCHAR (MAX) NULL,
    [DataVersion] ROWVERSION,
    CONSTRAINT [PK_dbo.Application] PRIMARY KEY CLUSTERED ([ApplicationId] ASC)
);
CREATE TABLE [dbo].[TestAccount] (
    [TestAccountId]   INT            IDENTITY (1, 1) NOT NULL,
    [ApplicationId] INT,
    [Name] NVARCHAR (MAX) NOT NULL,
    [DataVersion] ROWVERSION,
    CONSTRAINT [PK_dbo.TestAccount] PRIMARY KEY CLUSTERED ([TestAccountId] ASC),
    CONSTRAINT fk_AccountApplication FOREIGN KEY (ApplicationId) REFERENCES Application(ApplicationId)
);

我的数据库有更多的表,但我只是包括这些。

有人可以告诉我如何使用 EF Fluent API 来模拟 fk_AccountApplication 关系吗?

如何使用数据注释来做到这一点。这样做更容易吗?人们建立这些关系的最正常方式是什么。使用注释还是使用 Fluent API?

4

1 回答 1

1

我个人发现使用数据注释更容易做到这一点,但我相信其他人会不同意我的观点(对他们自己而言)。

就数据注释而言,您可以这样做:

您的 Application 对象应包括以下内容:

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ApplicationID { get; set; }

public virtual ICollection<TestAccount> TestAccounts { get; set; }

那么您的 TestAccount 应该包括以下 2 个属性:

[ForeignKey("Application")]
public int ApplicationID { get; set; }

public virtual Application Application { get; set; }

这应该告诉 EF 他们之间有一个 FK 链接

于 2013-03-05T04:50:25.963 回答