0

私は今しばらく苦労してきた問題を抱えています。

データベースに次の既存のテーブルがあるとします。

CREATE TABLE [dbo].[ModuleData] (
  ItemID INT NOT NULL,
  DataType INT NOT NULL,
  DataID  INT NOT NULL
);

CREATE TABLE [dbo].[Costs] ( -- DataType = 2
  CostID INT IDENTITY (1, 1) NOT NULL,
  Amount MONEY NOT NULL,
);

CREATE TABLE [dbo].[Actions] ( -- DataType = 4
  ActionID INT IDENTITY (1, 1) NOT NULL,
  Note NVARCHAR (1000) NULL,
);

それらを次のクラスに対してマッピングしたいと思います。

public class ModuleData
{
    public int ItemID {get; set;}
    public int DataID { get; set; }
    public int DataType { get; set; }
}

public class Cost:ModuleData
{
    public Cost()
    {
        //DataType = 2;
    }
    public int CostID {get; set;}
    public Double Amount {get; set;}
}

public class Action: ModuleData
{
    public Action()
    {
        //DataType = 4;
    }
    public int ActionID { get; set; }
    public String Note {get; set;}
}

DataType識別器およびキーとして使用DataIDします。

流暢な API を使用すれば可能であるという印象を受けますが、機能させることができません。

4

1 に答える 1

0

あなたのEntityTypeConfiguration<ModuleData>中に、

Map<Cost>(m => m.Requires("DataType").HasValue(2));
Map<Action>(m => m.Requires("DataType").HasValue(4));

またはあなたのOnModelCreating書き込みで

modelbuilder.Entity<ModuleData>()
    .Map<Cost>(m => m.Requires("DataType").HasValue(2))
    .Map<Action>(m => m.Requires("DataType").HasValue(4));

お役に立てれば!

于 2013-12-18T15:08:25.077 に答える