0

これは単純なはずです。

クライアントとプロジェクトがあります:

public class Client
{
    public int ClientID { get; set; }
    public string ClientName { get; set; }
    public virtual ICollection<Project> Projects { get; set; }
}

public class Project
{
    public int ProjectID { get; set; }
    public string ProjectName { get; set; }
}

すべて正常に動作しています。Projects テーブルには、関係を格納する Client_ClientID というフィールドがあります。

ここで、プロジェクトのナビゲーション プロパティをクライアントに追加します。

public class Project
{
    public int ProjectID { get; set; }
    public string ProjectName { get; set; }

    // navigation properties
    public virtual Client Client { get; set; }
}

Update-Database を実行すると、次のエラーが表示されます。

Foreign key 'FK_dbo.Projects_dbo.Clients_Client_ClientID' references invalid column 'Client_ClientID' in referencing table 'Projects'

詳細な SQL は次のように表示されます。

EXECUTE sp_rename @objname = N'dbo.Projects.Client_ClientID', @newname = N'Client_ClientID1', @objtype = N'COLUMN'
ALTER TABLE [dbo].[Projects] ADD CONSTRAINT [FK_dbo.Projects_dbo.Clients_Client_ClientID] FOREIGN KEY ([Client_ClientID]) REFERENCES [dbo].[Clients] ([ClientID])

制約を追加する前に、Client_ClientID の名前を Client_ClientID1 に変更しようとしている理由がわかりません - 奇妙に思えますか?

私は何を間違えていますか?

4

1 に答える 1

0

をクラスに追加ForeignKeyAttributeします。Project

public class Project
{
    public int ProjectID { get; set; }
    public string ProjectName { get; set; }

    [ForeignKey("Client")]
    public int ClientID { get; set; }
    public virtual Client Client { get; set; }
}
于 2013-03-23T22:21:40.600 に答える