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.

  • 相关阅读:
    CDH5.15.1 hive 连接mongodb配置及增删改查
    一些hue的参考网址
    CDH hue下定时执行hive脚步
    流式分析系统实现 之二
    流式分析系统实现 之一
    Spark升级--在CDH-5.15.1中添加spark2
    Spark 基础之SQL 快速上手
    CDH Spark-shell启动报错
    Spark SQL例子
    azkaban 配置邮件
  • 原文地址:https://www.cnblogs.com/zzy0471/p/6859727.html
Copyright © 2011-2022 走看看