如果我想使用Linq-SQL,我還必須拖動數據庫表到設計器表面來創建實體類。是否可以在不拖放的情況下使用Linq-SQL?
我總是喜歡我的應用程序完全控制,不喜歡由dotnet創建的類。
是否可以使用我自己的數據訪問層實體類在Linq和數據庫之間提供此連接?
我該怎麼做?
如果我想使用Linq-SQL,我還必須拖動數據庫表到設計器表面來創建實體類。是否可以在不拖放的情況下使用Linq-SQL?
我總是喜歡我的應用程序完全控制,不喜歡由dotnet創建的類。
是否可以使用我自己的數據訪問層實體類在Linq和數據庫之間提供此連接?
我該怎麼做?
您可以使用Linq-to-SQL非常輕鬆地編寫自己的類 - 只需使用某些屬性繪製類。
爲例,這是一個非常簡單的表我在我的項目之一,並將其與LINQ到SQL就好作品:
[Table(Name = "Categories")]
public class Category : IDataErrorInfo
{
[Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert)]
public int Id { get; set; }
[Column] public string Name { get; set; }
[Column] public string ExtensionString { get; set; }
}
的代碼是很容易的,特別是如果你做您的房產名稱與您的房間名稱對齊(您不必)。
然後你只需要一個存儲庫連接到DB:
class CategoryRepository : ICategoryRepository
{
private Table<Category> categoryTable;
public CategoryRepository(string connectionString)
{
categoryTable = (new DataContext(connectionString)).GetTable<Category>();
}
}
當然還有更多,但是這表明你很基本,它不是很難,一旦你瞭解它做。這樣你就可以100%地控制你的類,你仍然可以利用Linq-to-SQL。
我從學到了這個方法,ASP.NET MVC框架,一本很棒的書。
如果您想了解更多信息,我所有的Linq-to-SQL類都是從頭開始編寫的,您可以瀏覽here。
爲避免拖動&下降,您可以查看SqlMetal.exe。
然而,這聽起來像你真的是請求持久性無知,我不知道這是可能的L2S - 這當然是不可能的LINQ到實體直到.NET 4 ...
我曾經寫過一個blog post on using SqlMetal.exe and subsequently modifying the generated schema - 也許你會覺得它很有用,儘管它有不同的動機。
我在CodeProject上找到了一些教程,介紹瞭如何做到這一點,包括如何以OO方式處理關係(M:M,1:M,M:1)並保持同步當你進行更新:
別忘記'使用System.Data.Linq.Mapping;' – naspinski 2009-12-07 12:04:50
以前的回答是在談論「持久性無知」。你有問題嗎? – Tebo 2009-12-07 13:04:25
我們可以交換電子郵件地址嗎? – Tebo 2009-12-07 13:12:32