我有一张桌子大师
其中的数据就像
<table>
<tr>
<td>Id</td>
<td>Tag</td>
<td>Text</td>
<td>Discriminartor</td>
</tr>
<tr>
<td>1</td>
<td>20</td>
<td>"test1"</td>
<td>Field20</td>
</tr>
<tr>
<td>2</td>
<td>21</td>
<td>"test1"</td>
<td>Field21</td>
</tr>
<tr>
<td>3</td>
<td>22</td>
<td>"test1"</td>
<td>Field22</td>
</tr>
</table>
在我的模型课中,我有课
public class Master
{ public int Id{ get; set; }
public string Tag{ get; set;}
public string Text { get; set; }
}
我有Field20,Field21和Field22的类,如下所示
public class Field20 : Master
{ public Field20()
{
Tag= "20";
Text= "Sender's Reference";
}
}
public class Field21 : Master
{ public Field21()
{
Tag= "21";
Text= "Sender's Reference";
}
}
public class Field22 : Master
{ public Field22()
{
Tag= "22";
Text= "Sender's Reference";
}
}
在映射中我有
modelBuilder.Configurations.Add(new MasterMap());
modelBuilder.Entity<Master>()
.Map<Field20>(p => p.Requires("Discriminator").HasValue("Field20"))
.Map<Field21>(p => p.Requires("Discriminator").HasValue("Field21"))
.Map<Field22>(p => p.Requires("Discriminator").HasValue("Field22"))
现在当我试图为像
这样的高手增加价值时 var fields = new Master(){Tag= "22", Text = "123.1"}
_context.Master.Add(fields)
_context.savechanges()
我正在
无法将值NULL插入列&#39; Discriminator&#39;,table&#39; Master&#39 ;;列不允许空值。 INSERT失败。 声明已经终止。
答案 0 :(得分:0)
这一行...
var fields = new Master(){Tag= "22", Text = "123.1"};
...创建一个没有定义鉴别器的对象,因为它不是一个子类型。您应该创建一个子类型:
var field = new Field20(){Tag= "22", Text = "123.1"};
为了帮助您不创建错误的对象,请将Master
设为抽象类。