Code First许多引用没有FK的类

时间:2014-10-22 20:04:43

标签: performance entity-framework ef-code-first code-first

我们都熟悉3 types of Inheritance 但是我们有以下不适合的情况。

1)我们有一个地点类

public abstract class Location
{
    public decimal geoLat { get; set; }
    public decimal geoLng { get; set; }

    public string Address1 { get; set; }
    public string Address2 { get; set; }

    public string City { get; set; }
    public string State { get; set; }
    public string Zip { get; set; }        
}

我们有一个行情类

public class Quote
{
    public int QuoteId {get;set;}
    public decimal Qty {get;set;}
    public decimal SubTotal {get;set;
    //etc
}

我们想要做的是拥有许多位置的属性,以便我们的MSSQL Schema看起来像这样。

引用 --QuoteId --SubTotal --JobgeoLat --JobgeoLng --JobAddress1 --JobAddress2 --JobCity --JobState --JobZip --BillinggeoLat --BillinggeoLng --BillingAddress1 --BillingAddress2 --BillingCity --BillingState --BillingZip --ShippinggeoLat --ShippinggeoLng --ShippingAddress1 --ShippingAddress2 --ShippingCity --ShippingState --ShippingZip

在我们的应用程序中,我们想要访问位置信息,如myQuote.Location.Address1等。

我们当然可以创建一个像Quote.JobLocation,Quote.BillingLocation这样的Fk,它有一个单独的位置表。然而,由于许多原因,使用这种Fk的性能并不理想。

我们也可以在报价表中添加列,就像在我的示例中一样(这就是当前的设置),但我们想要使用强类型Quote.BillingLocation,Quote.JobLocation等。

所以问题是,我们如何实现Quote表结构(将Location属性直接存储在Quotes表中),同时还使用Quote.JobLocation等。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

添加     [ComplexType]

到Location类然后添加     公共位置JobLocation {get; set;}     公共位置ShippingLocation {get; set;}

在Quotes表中生成了正确的属性。

谢谢@KellyEthridge