我有一個與WCF一起工作的實體框架(v.5)項目。
我的數據庫有一個帳戶表,因此我有一個「帳戶」實體框架對象。 我想揭露的方法:
AddAccount(Account a)
account參數是從我的數據庫生成的實體框架對象。
每次嘗試使用此服務時,Account的屬性都是空的,我無法理解爲什麼。
這裏是我的代碼的示例:
WCF:
接口:
[OperationContract(Name = "AddAccount")]
string AddAccount(Account Account);
實現:由EF產生
public string AddAccount(Account newAccount)
{
myContext db=new myContext();
db.Accounts.Add(newAccount);
db.SaveChanges();
return "something";
}
賬戶級,並且具有int
「id」字段和DateTime
「Created」字段d。
我的問題是,爲什麼「newAccount」參數是空的?
2)
據我所知,揭露覆雜參數的方法最好的辦法是使用DataContract
和DataMembers
,並提出了,我想問兩個問題。
a)我是否需要將DataContract
實現爲實體對象?根據我的理解,不建議直接公開EF對象,但在我想轉移的類上使用DataContract
,但另一方面,在嘗試使用我的項目時沒有出現錯誤,該項目沒有實現DataContract
帳戶。
b)爲什麼不建議它傳遞EF對象作爲參數,除了讓客戶端了解我的數據庫表的構建?
謝謝。
感謝您的評論Lajos,但這不是問題在這裏,顯然我有更多的領域,我必須填寫和「CreationDate」和「ID」只是很多領域的例子 – 2013-02-11 07:25:56
你不明白我的回答,@Rasuli。我的回答告訴你如何初始化創建,這是另一個領域。如果你有更多的字段,並且你打算爲它們存儲初始值,你還需要初始化其他字段。 – 2013-02-11 14:07:49
好的,謝謝你的回答,的確我試圖傳遞這些參數,無論它們是POCO實體還是我定義爲DataContract的類。我現在遇到的問題是,我發送的對象是空的/空屬性,我不明白爲什麼,有趣的是,當我嘗試在WCF測試中測試「AddAccount」時客戶端,參數傳遞時沒有空值,當我嘗試從另一個應用程序中使用此服務時,參數作爲null傳遞。 – 2013-02-11 18:55:33