首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TPC映射生成基类表

TPC映射生成基类表
EN

Stack Overflow用户
提问于 2012-05-29 15:57:57
回答 1查看 174关注 0票数 1

我想通过代码优先来实现TPC映射,我已经阅读了这篇文章:Inheritance with EF Code First: Part 3 – Table per Concrete Type (TPC)

我已经编写了如下代码。

代码语言:javascript
复制
namespace TPCTest
{
    class Program
    {
        static void Main(string[] args)
        {
            using (TestContext context = new TestContext())
            {
                Manager m = new Manager();
                m.AnnualSalary = 100000;
                m.Name = "Allen";
                m.Sex = true;
                m.Id = 1;

                Worker w = new Worker();
                w.Id = 2;
                w.Name = "John";
                w.Sex = true;
                w.MonthlyPay = 5000;

                context.empSet.Add(m);
                context.empSet.Add(w);
                context.SaveChanges();
            }
        }
    }

    abstract class Employee
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public bool Sex { get; set; }
    }

    class Manager : Employee
    {
        public decimal AnnualSalary { get; set; }
        public string Department { get; set; }
    }

    class Worker : Employee
    {
        public decimal MonthlyPay { get; set; }
    }

    class TestContext : DbContext
    {
        public DbSet<Employee> empSet { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Manager>().Map(m =>
                {
                    m.MapInheritedProperties();
                    m.ToTable("Manager");
                });

            modelBuilder.Entity<Worker>().Map(m =>
                {
                    m.MapInheritedProperties();
                    m.ToTable("Worker");
                });

            modelBuilder.Entity<Employee>().Property(e => e.Id).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.None);
        }
    }
}

但是运行代码后,我发现数据库中也存在Employee表,有谁能帮上忙吗?

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2014-10-05 00:24:09

使用EF 5.0或更高版本!

这个问题似乎从那个版本开始就被修复了。使用EF 4.3.1,我可以重现这种行为。所以只需要更新。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10795183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档