Entity Framework with MySQL 学习笔记一(复杂类型 Complex Types)
2014-11-04 11:26
447 查看
有时候我们希望在sql一个表里面的column, 一部分被分化成另一个class
典型的例子是 Address
直接看代码:
insert
注 : 复杂类型内不要放 FK concurrentCheck 那些比较好(我没研究,但是常遇到bug)
更新 :
默认情况下,我们不使用[Column("xx")]也是可以的,EF 会替我们命名,规范是 属性名 + "_" + 属性名 + "_" + .... 都是用属性名,配合下划线,多少层都可以。
当某个entity有超过1个同类的 ComplexType 时,上面的 [Column("xx")] 就搞不定了
这时我们可以用 :
complex 不可以是null , 你至少也要它一个空的对象。不然会 saveChange error的, EF 以后可能会支持。
典型的例子是 Address
直接看代码:
[Table("member")] public class Member { [Key] public Int32 memberId { get; set; } public string name { get; set; } public virtual Address address { get; set; } } /* 不能公开 - public DbSet<Address> addresss { get; set; } <-don't do this */ [ComplexType] //写一个标签 public class Address { /* 这里一定要写 column 即使名字一样,因为defaul的命名法是 Address_postcode */ [Column("postcode")] public string postcode { get; set; } [Column("country")] public string country { get; set; } }
insert
db.members.Add(new Member { name = "lu xiao feng", address = new Address { country = "MALAYSIA", postcode = "81300" } }); db.SaveChanges();
注 : 复杂类型内不要放 FK concurrentCheck 那些比较好(我没研究,但是常遇到bug)
更新 :
默认情况下,我们不使用[Column("xx")]也是可以的,EF 会替我们命名,规范是 属性名 + "_" + 属性名 + "_" + .... 都是用属性名,配合下划线,多少层都可以。
当某个entity有超过1个同类的 ComplexType 时,上面的 [Column("xx")] 就搞不定了
这时我们可以用 :
var nat = modelBuilder.Types<Nat>(); nat.Configure(n => n.Property(p => p.ta1.token).HasColumnName("ta1_token")); nat.Configure(n => n.Property(p => p.ta2.token).HasColumnName("ta2_token"));
complex 不可以是null , 你至少也要它一个空的对象。不然会 saveChange error的, EF 以后可能会支持。
相关文章推荐
- Entity Framework with MySQL 学习笔记一(拦截)
- Entity Framework with MySQL 学习笔记一(乐观并发)
- Entity Framework with MySQL 学习笔记一(关系整理版)
- Entity Framework with MySQL 学习笔记一(安装)
- Entity Framework with MySQL 学习笔记一(查询)
- Entity Framework with MySQL 学习笔记一(查看EF和SQL请求日志)
- Entity Framework with MySQL 学习笔记一(insert,update,delete)
- Entity Framework with MySQL 学习笔记一(继承)
- Entity Framework with MySQL 学习笔记一(验证标签)
- Entity Framework with MySQL 学习笔记一(关系)
- ADO.NET Entity FrameWork学习笔记之类型(转载)
- Entity Framwork CodeFirst 学习笔记三:使用复杂类型
- ADO.NET Entity Framework 学习中级篇1—EF支持复杂类型的实现
- EntityFramework Core 学习笔记 —— 包含与排除类型
- MySQL学习笔记12:数据类型
- Entity Framework with MySQL Provider 更新行数为0的Bug
- Mysql学习笔记之常用数据类型
- mysql数据类型学习笔记
- MySQL学习笔记12:数据类型
- ADO.NET Entity FrameWork 学习笔记之函数