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.

  • 相关阅读:
    oracle:wm_concat函数与oracle版本
    “default关键字”与“序列化传输”的注意事项
    silverlight:利用telerik中的zip类对字符串进行压缩、解压
    引爆点不是坏事
    Liked:基于FriendFeed API的信息过滤器
    器物的改变
    让Blog成为一个中心?
    环球企业家《信息网站的未来》
    The readings, filtered by social network!
    0509·刘未鹏的TopLanguage聚会[一]
  • 原文地址:https://www.cnblogs.com/zzy0471/p/6859727.html
Copyright © 2011-2022 走看看