2016-04-01 27 views
1

Entity Framework uygulamasında yeniyim. Lawson veritabanında CUSTORDER ve COLINE tabloları için POCO oluşturmak için Kod-İlk-From-Veritabanı yaklaşımını kullandım. Bu iki POCO aşağıdaki gibi görünür: Not: Okumayı kolaylaştırmak için alanların çoğunu kaldırdım.EF 6.1 Kod İlk Kimden Veritabanından - Nasıl Katılılır

[Table("LAWSON.CUSTORDER")] 
public partial class CustOrder 
{ 
    [Key] 
    [Column(Order = 0)] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public short COMPANY { get; set; } 

    [Key] 
    [Column(Order = 1)] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int ORDER_NBR { get; set; } 

    public bool R_STATUS { get; set; } 

    [Required] 
    [StringLength(2)] 
    public string ORDER_TYPE { get; set; } 

    public DateTime ORDER_DATE { get; set; } 
    public DateTime PRICE_DATE { get; set; } 

    . . . 

} 



[Table("LAWSON.COLINE")] 
public partial class CoLine 
{ 
    [Key] 
    [Column(Order = 0)] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public short COMPANY { get; set; } 

    [Key] 
    [Column(Order = 1)] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int ORDER_NUMBER { get; set; } 

    [Key] 
    [Column(Order = 2)] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int LINE_NBR { get; set; } 

    public bool R_STATUS { get; set; } 

    . . . 
} 

Ben DBContext CustOrder almak için kullandıkları , ben de CustOrder ile ilişkili tüm Harici dahil etmek istiyoruz. Bence CustOrder sınıfına aşağıdan eklemem gerekecek.

public virtual IList<CoLine> CoLines { get; set; } 

Ama nasıl EF Coline sütununda ORDER_NUMBER katılmak için CustOrder içinde ORDER_NBR sütunu kullanarak bu iki tablo katılmak için söyleyebilirsiniz?

+0

Üzgünüz, hala çok net değilim. Orijinal sorumu biraz düzenledim. Yaptığım şey, ORDER_NUM coulmn'u CoLine’de ORDER_NUMBER olarak değiştirmektir. Şimdi CustOrder'da ORDER_NUM ve CoLine'da katılmak istediğim bir ORDER_NUMBER var. FK'yi EF'in Coustine'de ORDER_NUMBER numaralı CustOrder'da ORDER_NUM'a katılmayı bileceği şekilde nasıl ekleyebilirim? –

cevap

1

Sen FK mülkiyet ForeignKey özellik kullanmak gerekir:

public class CustOrder 
{ 

    [Key] 
    [Column(Order = 1)] 
    [ForeignKey("CoLines")] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int ORDER_NBR { get; set; } 

    public virtual ICollection<CoLine> CoLines { get; set; } 
} 

Ben de ICollection<T> navigasyon özelliği türünü değiştirmek önerilir. Daha fazla ayrıntı için bu link kontrol edin. Ne onun değer için

+0

, FK ek açıklaması EF'ye CoLine tablosunun yabancı anahtarı olduğunu söylüyor. Ancak EF, CustOrder'daki ORDER_NBR'nin CoLine'da ORDER_NBR'ye karşılık geldiğini nasıl biliyor? Sütun adı aynı olduğu için mi? Eğer öyleyse, isimleri farklı olsaydı ne olur? –

+0

Bu durumda tablonun gerçek ismini ayarlamak için 'Column' özniteliğinin' Name' özelliğini kullanın: 'Column (Order = 1, Name =" ColumnName ")' – octavioccl

+0

Üzgünüz, hala çok açık değilim . Orijinal sorumu biraz düzenledim. Yaptığım şey, ORDER_NUM coulmn'u CoLine’de ORDER_NUMBER olarak değiştirmektir. Şimdi CustOrder'da ORDER_NUM ve CoLine'da katılmak istediğim bir ORDER_NUMBER var. FK'yi EF'in Coustine'de ORDER_NUMBER numaralı CustOrder'da ORDER_NUM'a katılmayı bileceği şekilde nasıl ekleyebilirim? –

0

,

public virtual IList<CoLine> CoLines { get; set; }

nasıl kurulum CustOrder nesneden Coline nesnesine nav özelliği. Belirtilen oktavioccl gibi, FK notasyonunu eklemelisiniz, ancak bunu ORDER_NBR özelliğine inandığım CoLine sınıfında istersiniz.

İlgili konular