1

我在MVC中編寫項目並使用EF 4.0。我正在使用存儲庫模式,但不確定放置某些屬性的位置。EF和存儲庫模式

public interface IUserRepository<User> 
{ 
    User GetUserById(int userId); 
    void UpdateUser(User user); 
    void AddUser(User user); 
    List<User> GetUsersByName(string userName);    
    void Create(User user);  
    int NumberOfFollowers { get; set; }  
} 

我的兩個問題是1)。財產NumberOfFollowers應該是財產還是方法? 和2)。它應該放在用戶實體類而不是界面內嗎?

歡呼聲。

回答

1

NumberOfFollowers將是用戶本身的一個屬性,不在存儲庫接口中。

善良,

+1

這應該是一個評論。 – 2011-01-24 16:44:35

+0

我創建了一個名爲IUser的接口,名爲NumberOfFollowers,但我遇到了使用EF實體類型從User Entity類派生它的問題。 – scouserider 2011-01-24 17:24:39

1

回覆:屬性或方法,.NET Design Guideless指示它不應該是一個屬性,如果它可以a)拋出和異常或b)需要大量的時間返回。

0

我會同意丹尼爾的回答 - 擁有名爲NumberOfFollowers的房產將是最合乎邏輯的。作爲指導,如果有可以通過User對象本身訪問的數據,則可以直接在User類上創建屬性\方法。 Oftern如果你有其他表的foregin鍵,那麼訪問這些數據項可以通過User類完成,並應該封裝在properties \ methods中。另一方面,如果您想查找有關User的信息,但需要另一個對象的幫助,請創建一個UserService類。保持資源庫簡單 - 只有數據檢索\操作方法,並在單獨的服務類中創建更多涉及/業務邏輯飢餓的方法。

public class UserService { 
    private DbContext Context {get; set;} 

    public IList<Document> GetUserDocument(User user) 
    { 
     // Assuming User table does not have a Document ID as a foregin key.. 
     // Do whatever you need to do to get document. 
    } } 

以上是粗略的指導,絕不是事實上的標準,但它對我很好。

0

我寫了一個關於它的blog,並介紹瞭如何抽象ORM提供程序特定功能,按請求對象上下文管理,管理多個數據庫中的模型,具有完整源代碼和示例的工作單元模式的事務管理。

如果您有任何問題,請查看並告訴我。