Entity Framework 复杂类型(转)

本文通过实例解析了如何将多个类共有的属性集合为一个复杂属性,从而简化代码结构,提高代码复用性和可读性。通过将共享属性抽象为一个独立类,可以减少代码冗余,使代码维护更加方便。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了说明什么是复杂属性,先举一个例子。

复制代码
 public class CompanyAddress
    {
        public int ID { get; set; }
        public string CompanyName { get; set; }
        public string StreetAddress { get; set; }
        public string City { get; set; }
        public string State { get; set; }
        public string ZipCode { get; set; }
    }

    public class FamilyAddress
    {
        public int ID { get; set; }
        public string StreetAddress { get; set; }
        public string City { get; set; }
        public string State { get; set; }
        public string ZipCode { get; set; }
    }
复制代码

上面有两个类:公司地址和家庭地址,它们有四个相同的属性:StreetAddress、City、State、ZipCode。映射到数据库中的结构如图:

这里,我们可以将这四个属性集合成一个复杂属性Address,修改后的类为:

复制代码
public class CompanyAddress
    {
        public int ID { get; set; }
        public string CompanyName { get; set; }
        public Address Address { get; set; }
    }

    public class FamilyAddress
    {
        public int ID { get; set; }
        public Address Address { get; set; }
    }

    [ComplexType]
    public class Address
    {
        public string StreetAddress { get; set; }
        public string City { get; set; }
        public string State { get; set; }
        public string ZipCode { get; set; }
    }
复制代码

此时,所生成的数据库如图:

可以看到,两张表中仍然具有相应的地址属性信息。代码中的Address类就是复杂属性,它并不会在数据库中映射成相应的表,但我们的代码确简洁了许多。

所以如果有几个属性在几个类中都有用到,那么就可以将这几个属性集合成一个复杂类型,并在相应的类中增加这个复杂类型的属性。

转自:http://www.cnblogs.com/Gyoung/archive/2013/01/17/2864747.html

转载于:https://www.cnblogs.com/ITGirl00/p/3533219.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值