2009-12-07 139 views
5

如果我想使用Linq-SQL,我還必須拖動數據庫表到設計器表面來創建實體類。是否可以在不拖放的情況下使用Linq-SQL?

我總是喜歡我的應用程序完全控制,不喜歡由dotnet創建的類。

是否可以使用我自己的數據訪問層實體類在Linq和數據庫之間提供此連接?

我該怎麼做?

回答

7

您可以使用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

+0

別忘記'使用System.Data.Linq.Mapping;' – naspinski 2009-12-07 12:04:50

+0

以前的回答是在談論「持久性無知」。你有問題嗎? – Tebo 2009-12-07 13:04:25

+1

我們可以交換電子郵件地址嗎? – Tebo 2009-12-07 13:12:32

1

爲避免拖動&下降,您可以查看SqlMetal.exe

然而,這聽起來像你真的是請求持久性無知,我不知道這是可能的L2S - 這當然是不可能的LINQ到實體直到.NET 4 ...

我曾經寫過一個blog post on using SqlMetal.exe and subsequently modifying the generated schema - 也許你會覺得它很有用,儘管它有不同的動機。

+0

謝謝,但耐人尋味。 – Tebo 2009-12-07 11:47:21

+0

請問,「持久性無知」是什麼意思? – Tebo 2009-12-07 11:54:17

相關問題