2009-08-26 47 views
0

我將存儲產品可用的課程ID的逗號分隔列表,其中可能有任意數量的它們,並且多次只有一個。我正在使用MVC,我希望能夠在列表模型之前將列表提取出來。基本上我不想將一個列表解析到視圖或控制器內部的數組中......如何/在哪裏執行此操作的最佳方式,這裏是我的存儲庫使用的產品對象。我將使用什麼類型的courseIDs集合,以及將數據庫中逗號分隔列表中的數據轉換爲數組或類似內容?如何使未定義的集合成爲我的對象的一部分?

namespace DomainModel.Entities 
{ 
    public class Product 
    { 
     public int ProductID { get; set; } 
     public string Name { get; set; } 
     public string Description { get; set; } 
     public decimal Price { get; set; } 
     public ??? CourseIDs { get; set; } 
    } 
} 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using DomainModel.Entities; 

namespace DomainModel.Abstract 
{ 
    public interface IProductsRepository 
    { 
     IQueryable<Product> Products { get; } 
    } 
} 

回答

0

如果它提供給你將所有的功能您需要的IEnumerable<string>可能是存儲課程ID的最合適的方法。它是限制最少的「收集」界面。如果您需要IListAdd,Remove,Count等)提供的其他功能,那麼IList<string>也是一個選項。

保留數據訪問層中逗號分隔字符串的任何分析(您從數據庫中讀取的相同位置)。根據您的模型泄露這些細節是沒有意義的。

0

如何System.Collections.Generic.List<string>IList<string>? 你可以做的分裂在DAO(如果你使用的模式),或者你可以在字符串存儲在您的產品類中的延遲加載分裂名單:

public class Product { 
    private string _courseIdsString; 
    private IList<string> _courseIds; 
    public IList<string> CourseIds { 
    get { 
     if(_courseIds == null) 
     _courseIds = new List<string>(_courseIds.Split(',' StringSplitOptions.RemoveEmptyEntries)); 
     return _courseIds; 
    } 
    // ... 
} 
+0

我正在使用LINQ to SQL – BigOmega 2009-08-26 17:27:04

相關問題