开发者

How to Use inheritance in EF

I am using EF 4.0 , i have one problem

Table structure in DB is:

Table: Setting--->
     开发者_运维知识库                Name (PK)
                     GroupBy
                     DataType

Table: UserSetting-->
                     SettingName(PK)(FK)
                     UserName(PK)(FK)
                     Value

Table: WorkstationSetting-->
                     SettingName(PK)(FK)
                     WorkstationName(PK)(FK)
                     Value

Now i want to make use of inheritance, because WorkstationSetting and UserSetting inherits settings so any suggestion how to achieve inheritance, i tried but i got error like

"Error  39  Error 3003: Problem in mapping fragments starting at line 1621:All the key properties (Settings.Name) of the EntitySet Settings must be mapped to all the key properties (WorkstationSetting.SettingName, WorkstationSetting.WorkstationName) of table WorkstationSetting.


I see you have in UserSetting and WorkstationSetting a composite PK. If UserSetting and WorkstationSetting are derived from Setting, they should have Name as PK.

Another comment; in general, it's not recommended to use a name or something "meaningful" as PK since it is less scalable and might cause limitations (i.e. max index size). Use instead an int or uniqueidentifier.

I recommend you to introduce a new field which is SettingId which should be added to all three tables. In EF designer, just add the Inheritance.


Look into table per type inheritance. For example look here. It should help you get started. The idea is that you have a table for each concrete type (as you have) and you map it to an object hierarchy.

Maybe your problem is with the keys. How is your mapping defined? Are the associations between the tables defined in the DB?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜