我正在尝试将实体框架模型应用于现有数据库。数据库中的每个表都有一个DateCreated和DateModified列,因此我创建了一个包含这些属性的基类。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="add_product" method="post">
<div class="modal-body">
<div class="header add_product">
<div class="form-group">
<label class="control-label">Productnaam*</label>
<input maxlength="250" id="naam" type="text" required="required"
class="form-control" name="naam"/>
</div>
</div>
<hr/>
<div class="modal-footer ">
<button class="btn btn-success completeBtn btn-lg" name="submit"
type="submit" style="width: 100%;">
<span class="glyphicon glyphicon-ok-sign"></span> Toevoegen
</button>
</div>
</form>
这是table-per-concrete-type继承。
然后我有一个Order表和一个特定类型的订单的SpecialOrder表。
public abstract class Entity
{
public DateTime DateCreated { get; set; }
public DateTime DateModified { get; set; }
}
映射到班级:
|ORDER|
|PK_ID|DateCreated|DateModified|
|SPECIALORDER|
|PK_OrderID|DateCreated|DateModified|
这是每个类型的表继承。
注意:PK_ID和PK_OrderID列将具有相同的值,因此我只将Id属性添加到Order基类。
我对这些类型的EF配置:
public class Order : Entity
{
public long Id { get; set; }
}
public class SpecialOrder : Order
{
}
因此,我有一个Id属性映射到Order.PK_ID和SpecialOrder.PK_OrderID列,并且在向数据库添加条目时,这两列都使用Order.Id属性值写入。
但是,我的DateCreated和DateModified值只写入订单表中的列,而SpecialOrder中的列输入为NULL。
我可以理解为什么这可能不起作用,因为虽然它在写入时有意义,但当EF从数据库中读取时,哪个表的DateCreated列会选择更新一个属性?
但是,共享一个属性的两列似乎对Order.PK_ID和SpecialOrder.PK_OrderID正常工作。
那么,如何让EF从Entity.DateModified属性更新两个DateModified列?理想情况下,不向模型类添加额外的DateModified属性。