是否可以在没有拖放的情况下使用Linq-SQL?

Teb*_*ebo 5 sql linq linq-to-sql

如果我想使用Linq-SQL,我还必须将DB Table拖到设计器表面以创建实体类.

我总是喜欢在我的应用程序中完全控制,不喜欢dotnet创建的类.

是否可以使用我自己的数据访问层实体类在Linq和DB之间提供此连接?

我怎么能完成它?

nas*_*ski 7

您可以使用Linq-to-SQL轻松编写自己的类 - 只需使用一些属性绘制类.

例如,这是我在我的一个项目中使用的一个非常简单的表,它可以很好地与Linq-to-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; }
}
Run Code Online (Sandbox Code Playgroud)

代码非常简单,特别是如果你使你的属性名称与你的表名一致(你不必).

然后你只需要一个存储库来连接数据库:

class CategoryRepository : ICategoryRepository
{
    private Table<Category> categoryTable;
    public CategoryRepository(string connectionString)
    {
        categoryTable = (new DataContext(connectionString)).GetTable<Category>();
    }
}
Run Code Online (Sandbox Code Playgroud)

当然还有更多内容,但这会向您展示非常基础,一旦理解它就不难做到.这样,您可以100%控制您的类,您仍然可以利用Linq-to-SQL.

我从Pro ASP.NET MVC Framework学到了这种方法,这是一本很棒的书.

如果你想看到更多,我的所有Linq-to-SQL类都是从头开始编写的,我可以在这里浏览一个项目.