首页 新闻 会员 周边

EF 4.1 Code First 子类具有相同属性时出错如何解决

0
悬赏园豆:20 [已解决问题] 解决于 2012-10-24 22:42

表:

CREATE TABLE [dbo].[Test](
 [PKID] [uniqueidentifier] NOT NULL,
 [Name] [nvarchar](50) NULL,
 [AA] [nchar](10) NULL,
 [BB] [nchar](10) NULL,
 [CC] [nchar](10) NULL,
 [DD] [nchar](10) NULL,
 [EE] [nchar](10) NULL,
 [FF] [nchar](10) NULL,
 [TestType] [tinyint] NULL,
 CONSTRAINT [PK_Test] PRIMARY KEY CLUSTERED
(
 [PKID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

 

实体:

public abstract class Test : Entity
    {
        [Key]
        public Guid PKID { get; set; }
        public string Name { get; set; }
    }

    public class A : Test
    {
        public string BB { get; set; }
        public string CC { get; set; }
        public string DD { get; set; }
    }
    public class B : Test
    {
        public string AA { get; set; }
        public string BB { get; set; }
        public string CC { get; set; }
        public string DD { get; set; }
    }
    public class C : Test
    {
        public string EE { get; set; }
        public string FF { get; set; }
    }

 

            modelBuilder.Entity<Test>()
            .Map<A>(m => m.Requires("TestType").HasValue((byte)0))
            .Map<B>(m => m.Requires("TestType").HasValue((byte)1))
            .Map<C>(m => m.Requires("TestType").HasValue((byte)2));

 

当向A实体插入记录时,生成下面sql:

exec sp_executesql N'insert [dbo].[Test]([PKID], [Name], [BB], [CC], [DD], [AA], [BB1], [CC1], [DD1], [EE], [FF], [TestType])
values (@0, @1, @2, @3, @4, null, null, null, null, null, null, @5)
',N'@0 uniqueidentifier,@1 nvarchar(max) ,@2 nvarchar(max) ,@3 nvarchar(max) ,@4 nvarchar(max) ,@5 tinyint',@0='B1264CFD-8E16-451D-B015-E9CE756EC7F9',@1=N'A',@2=N'bb',@3=N'cc',@4=N'dd',@5=0

请问为何BB,CC,DD变成了BB1,CC1,DD1?

顺德人的主页 顺德人 | 初学一级 | 园豆:33
提问于:2011-09-13 13:57
< >
分享
最佳答案
0

BB,CC,DD,重复了,所以变成了BB1,CC1,DD1

收获园豆:20
artwl | 专家六级 |园豆:16736 | 2011-09-13 14:20

因为子类有些属性确实会交叉重复的,所以会这样。

顺德人 | 园豆:33 (初学一级) | 2011-09-13 15:37

@顺德人:

是啊,所以那个BB1,CC1,DD1是正常的啊,没问题哦

artwl | 园豆:16736 (专家六级) | 2011-09-13 18:29

@天行健 自强不息:

但我的表没有BB1,CC1,DD1,插入时出错,请问如何解决了?是否目前版本不支付这个操作?我使用model first,上面的设计是正确的。期望你能指点一二。

顺德人 | 园豆:33 (初学一级) | 2011-09-13 23:45
其他回答(1)
0

怎么没有解决方案?

顺德人 | 园豆:33 (初学一级) | 2011-09-15 12:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册