zoukankan      html  css  js  c++  java
  • Lerning Entity Framework 6 ------ Complex types


    Complex types are classes that map to a subset of columns of a table.They don't contains key. They are the Value Objects. For example, you have a entity named Company:

    public class Company
    {
        public int CompanyId { get; set; }
    
        public string CompanyName { get; set; }
    
        public string Street { get; set; }
    
        public string City { get; set; }
    
        public string Zip { get; set; }
    }
    

    You can Mondify it like this:

    public class Company
    {
        public Company()
        {
            this.Address = new Address();
        }
        public int CompanyId { get; set; }
    
        public string CompanyName { get; set; }
    
        public Address Address { get; set; }
    }
    
    public class Address
    {
        public string Street { get; set; }
    
        public string City { get; set; }
    
        public string Zip { get; set; }
    }
    

    This structure can made the entity's meaning clearer than before. and the class Address can be used as a common value object for many classes. Now we complete all codes:

    public class Company
    {
        public Company()
        {
            this.Address = new Address();
        }
        public int CompanyId { get; set; }
    
        [MaxLength(100)]
        public string CompanyName { get; set; }
    
        public Address Address { get; set; }
    }
    
    public class Person
    {
        public Person()
        {
            this.Address = new Address();
        }
        public int PersonId { get; set; }
    
        [MaxLength(50)]
        public string PersonName { get; set; }
    
        public Address Address { get; set; }
    }
    
    public class Address
    {
        [MaxLength(100)]
        public string Street { get; set; }
    
        [MaxLength(50)]
        public string City { get; set; }
    
        [MaxLength(10)]
        public string Zip { get; set; }
    }
    
    public class MyContext:DbContext
    {
        public MyContext() : base("name=Test")
        {
    
        }
    
        public DbSet<Company> Companies { get; set; }
    
        public DbSet<Person> People { get; set; }
    }
    

    Then, execute following commands in NuGet command line:

    • Enable-Migrations
    • Add-Migration Init
    • Update-Database

    Now, The table people and companies'structures like this:

    图片.png-8.6kB

    图片.png-8.9kB

    Let's have a test:

    static void Main(string[] args)
    {
        Address address = new Address
        {
            City = "BeiJing",
            Street = "ChangAn Street",
            Zip = "119"
        };
    
        Company company = new Company
        {
            CompanyName = "TianAnMen",
            Address = address
        };
    
        Person person = new Person
        {
            PersonName = "伟人",
            Address = address
        };
    
        using (MyContext db = new MyContext())
        {
            db.Companies.Add(company);
            db.People.Add(person);
    
            db.SaveChanges();
        }
    }
    

    You can provide the configuration for complex types. We can do so by providing a configuration class . The only difference is that we use a different base class, ComplexTypeConfiguration, not EntityTypeConfiguration.

    That's all.

  • 相关阅读:
    【Elasticsearch 技术分享】—— ES 常用名词及结构
    【Elasticsearch 技术分享】—— Elasticsearch ?倒排索引?这都是什么?
    除了读写锁,JUC 下面还有个 StampedLock!还不过来了解一下么?
    小伙伴想写个 IDEA 插件么?这些 API 了解一下!
    部署Microsoft.ReportViewe
    关于TFS强制undo他人check out
    几段查看数据库表占用硬盘空间的tsql
    How to perform validation on sumbit only
    TFS 2012 Disable Multiple Check-out
    在Chrome Console中加载jQuery
  • 原文地址:https://www.cnblogs.com/zzy0471/p/6859727.html
Copyright © 2011-2022 走看看