在使用动态数据插入时需要了解TPT EF4

时间:2012-12-05 19:17:06

标签: asp.net sql-server entity-framework-4 dynamic-data table-per-type

首先是我的错误:

  

EntitySet中的所有对象'Z10Entities.Accounts'必须具有唯一性   主键。但是,类型的实例   'DAL.Model.CreditCardAccount'和'DAL.Model.Debt'类型的实例   两者都具有相同的主键值,'EntitySet = Accounts; Id = 3'。

这是我的架构: Schema using Table Per Type Inheritance

从我的设计角度来看,该账户既可以是信用卡类型,也可以是债务。我做错了什么或者我遇到了EF框架的限制(4.3.1版本)

编辑:为我的问题添加一些清晰度基本上我试图理解为什么框架给我错误或动态数据外键FieldTemplate无法正常工作。

编辑2:似乎这个问题影响了我的应用程序的其他部分。好像我有一个TPT问题:

  

EntitySet中的所有对象'Z10Entities.Person'必须具有唯一性   主键。但是,类型为“DAL.Model.Employer”的实例和   “DAL.Model.PortalUser”类型的实例都具有相同的主键   value,'EntitySet = Person; Id = 1b64b850-34f9-e111-bdc8-000c29005764'。

1 个答案:

答案 0 :(得分:0)

似乎TPT对于某些事情而言并不适合其他事情。由于我的业务设计,我需要让不同的账户负债(账户被扣除,信用卡关闭等等。)

由于PK到PK模式,TPT无法解决这个问题。对于指向基表的PK必须是FK。这种微妙的变化有助于实现所需的功能,同时还简化了我的LinqToEF查询。

以下是重构版本: All is correct now :)