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关键。

我的印象是,使用 fluent 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 回答