假設我有一個實體對象'Jewels',它具有屬性'Name'和'Birthdate'。 我想實現一個LINQ查詢,它返回一個具有'Name','Birthdate'和'Birthstone'的對象。所以,我向「珠寶」這樣的:將實體對象擴展爲包含計算屬性
public partial class JewelStones : Jewels
string Birthstone = null;
public void JewelsWithStone()
{
this.Birthstone = "diamond";
//(we figure out what stone applies to the month here)
}
我能多遠這一點,我覺得我在正確的軌道上,但我不知道怎麼寫了LINQ查詢並取回對象包括Birthstone,因此我可以將該對象綁定到一個表示Birthstone的網格,我不會將它存儲在任何地方,因爲它始終是計算的(這是假裝數據,如果不合邏輯)。
List<Jewel> jewels = new List<Jewel>;
using (jewelentities db = new jewelentities())
{
jewels = (from j in db.Jewels select j).ToList();
}
如何用名稱,出生日期和幸運石填充我的寶石對象?
如果我在這裏沒有遵循最佳實踐,請告訴我!
編輯
我已經嘗試添加一個部分類的實體部分類。當我現在參考Jewel類時,它會看到Birthstone屬性,但它是空的。我不知道爲什麼?下面是部分類:
public partial class Jewel
{
private string _birthstone;
public string Birthstone
{
get { return _birthstone; }
set
{
JewelBusiness jewelBusiness = new JewelBusiness();
_birthstone = jewelBusiness.RequestBirthstone(birthmonth);
}
}
}
如果我使用LINQ查詢實體獲得的寶石記錄列表,我得到的所有來自實體的信息,Jewel.Birthstone是存在的,但它是空的。然而,如果我對結果進行foreach ---
foreach (Jewel j in jewels)
{
string stone = jewelBusiness.RequestBirthstone(j.Birthmonth);
}
石頭將等於預期的結果(該月的誕生石)。
爲什麼我的部分課程沒有迴歸誕生?
看看我的更新答案 – 2013-04-29 08:46:08
我想改變的屬性get方法,並檢查該字段爲空,是要走的路。但是請記住,您不能在entityframe-work查詢中將擴展屬性用於實體,因此您必須先使用toList,然後查詢擴展屬性。 – 2013-04-29 08:57:46