2013-03-09 79 views
0

我有一個使用mvc4實體框架上的C#程序。實體框架發佈到與POCO的關係

我想知道是否有可能(我確信它是)讓C#自動將帖子綁定到具有關係的對象。

例如:我有一個項目類,具有與用戶類的關係:

public class Item 
{ 
    public int ItemId{get;set;} 
    public string Name{get;set;} 

    public virtual User Owner{get;set;} 
} 

與POST方法我有一個ItemController:

public class ItemController 
{ 
    ... 
    public HttpResponseMessage PostItem(Item item) 
    { 
     .... 
    } 
} 

如何發佈和動態綁定與有關係的班級一起工作?

回答

1

是的,這是可能的。但是你永遠不應該(直到永遠)直接發佈到EF模型。原因很多,但名單上的安全性很高,但可維護性和(例如關注點分離)也非常高。

它怎麼會是一個安全問題?假設您的用戶屬性有一個「IsAdmin」字段,即使您沒有在視圖中引用IsAdmin,惡意用戶可以發佈Owner.IsAdmin爲true,並且如果您使用SaveChanges,則您的用戶現在是管理員。

是的,的確,您的應用可能無法如此工作。但其他細節可能會被黑客入侵,也可能是密碼更改,或其他任何可能的惡意方式。

通常,不要將數據模型直接傳遞給視圖。使用中間視圖模型,僅複製兩者之間的授權值,並且只有視圖模型中視圖所需的字段。

+0

我很欣賞這個建議。這篇文章將如何看待我的原始問題? – 2013-03-09 18:56:23

+0

您只需在視圖中使用該值。例如'@ Html.TextBoxFor(m => m.Owner.Name)' – 2013-03-09 19:07:03

+0

對不起,我應該指定。這是一個restfulWS類型的東西。如果我想從devHttpClient或fiddler或其他東西發佈帖子怎麼辦? – 2013-03-09 19:17:50