我正在使用Visual Studio 2012並在C#上進行開發。我剛開始創建一個WCF Web服務,我通過模型優先方法創建了數據庫,到目前爲止,我已經能夠插入,更新,刪除和獲取條目到簡單的表中,但是我遇到了一個問題:I不知道如何發送與另一個表有關係的表的參數。我必須發送什麼樣的參數給WCF端點才能將條目插入到與另一個表具有關係的表中?
爲了更好地解釋我的疑問,下面是一個例子:我有一個Regions表,然後我有另一個表稱爲Clusters,一個區域有許多集羣,一個集羣屬於一個區域。
由EF創建的結果類是這樣的:
public partial class Regions
{
public Regions()
{
this.Clusters = new HashSet<Clusters>();
}
public int RegionId { get; set; }
public string Name { get; set; }
public string Point { get; set; }
public System.DateTime CreatedDateTime { get; set; }
public System.DateTime UpdatedDateTime { get; set; }
public virtual ICollection<Clusters> Clusters { get; set; }
}
public partial class Clusters
{
public int ClusterId { get; set; }
public System.DateTime CreatedDateTime { get; set; }
public System.DateTime UpdatedDateTime { get; set; }
public virtual Regions Region { get; set; }
}
有了這種關係,我怎麼可以添加一個新的集羣?我添加新集羣的端點接收一個JSON字符串的字符串,我將其反序列化爲一個集羣對象。我反序列化這樣的:
Clusters cluster = new JavaScriptSerializer().Deserialize<Clusters>(data); //data is the JSON string
在這種情況下,我會發送到JSON字符串的唯一信息將是該集羣屬於(日期時間創建時的對象是本區域添加到服務器端),但是如何將區域信息發送到JSON中以便將其添加到羣集中?
我的意思是,我必須發送一個看起來像這樣的JSON字符串嗎?
{"RegionId":2}
因爲如果我這樣做,沒有條目,我還得別的嗎?
我真的很陌生,使用EF和WCF Web服務,任何幫助將不勝感激。
您的集羣實體似乎沒有該區域的外鍵。這是故意的嗎?我相信,如果沒有外鍵,你將不得不使用$鏈接來更新關係。如果你有外鍵,你應該能夠更新實體並相應地設置外鍵屬性。 – Pawel
我從一個模型創建了數據庫,並且我添加了導航屬性來關聯這兩個表,我不知道這些是外鍵還是應該如何創建它們,我還沒有使用實體框架模型 - 第一種方法 –
要創建一個外鍵屬性,在依賴端添加一個新的標量屬性,然後雙擊該關係並相應地設置屬性(參見本教程以獲取更多詳細信息http://msdn.microsoft。COM/EN-US /訂閱/ jj713299.aspx)。或者你可以砍一下。由於不管模型中是否有外鍵屬性,數據庫都不應該改變,所以你可以嘗試從你之前創建的數據庫創建模型 - 確保檢查「創建外鍵」(或類似的東西)複選框。還要備份你的模型,以防萬一... – Pawel