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.

  • 相关阅读:
    易宝支付Demo,生产中封装成简洁的代付接口,不用request如何获取项目运行时的真实路径(转)
    java之IO流的关闭
    Java IO包装流如何关闭?
    qt5.9模块
    九款免费轻量的 AutoCAD 的开源替代品推荐
    QT pro 添加带空格的路径以及添加库文件的正确方法
    QT添加openssl的方法
    手机芯战!麒麟与骁龙上演难分胜负的技术竞速赛(2013以后,芯片和基带都集成到一起去了)
    使用redis缓存加索引处理数据库百万级并发
    TF.Learn
  • 原文地址:https://www.cnblogs.com/zzy0471/p/6859727.html
Copyright © 2011-2022 走看看