2009-12-07 16 views
5

Linq-SQL kullanmak istiyorsam, varlık sınıflarını oluşturmak için DB Tablosunu tasarımcı yüzeyine sürüklemeliyim.Linq-SQL'i sürükle-bırak olmadan kullanmak mümkün mü?

Uygulamamda her zaman tam denetimi severim ve dotnet tarafından oluşturulan sınıfları sevmem.

Linq ve DB arasında kendi Veri Erişim Katmanı Varlık sınıflarımı kullanarak bu bağlantıyı sağlamak mümkün mü?

Nasıl yapılır?

cevap

7

Linq-to-SQL kullanarak kendi sınıflarınızı çok kolayca yazabilirsiniz - sadece sınıflarınızı bazı Nitelikler ile boyamayı gerektirir.

Örnek için

, bu benim projelerden biri var çok basit bir tablo olduğunu ve Linq SQL gayet güzel çalışır: Yapmak, özellikle kod çok kolay oldu

[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; } 
} 

mülk isimleriniz tablo isimlerinizle sıraya giriyor (zorunda değilsiniz). Tabii

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

daha fazlası var, ama bu size çok temellerini gösterir ve bunu anladıktan sonra yapmak zor değildir:

Sonra sadece DB bağlanmak için bir Deposu gerekir. Böylece sınıflarınızda% 100 kontrole sahip olursunuz ve Linq-to-SQL'den faydalanabilirsiniz.

Bu yaklaşımı, harika bir kitap olan Pro ASP.NET MVC Framework'dan öğrendim.

Daha fazlasını görmek isterseniz, tüm Linq-to-SQL sınıflarım sıfırdan başlayarak projelerimden birinde here göz atabilirsiniz.

+0

'System.Data.Linq.Mapping kullanarak'; – naspinski

+0

Önceki cevap "Kalıcılık Cehaleti" hakkında konuşuyordu. Bununla ilgili sorunların var mı? – Tebo

+1

E-posta eklerini değiştirebilir miyiz? – Tebo

1

& sürüklemesini önlemek için SqlMetal.exe'a bakabilirsiniz.

Ancak, gerçekten Sebat Cehalet talebinde sizin gibi sesler ve ben bu L2S ile mümkün olduğundan emin değilim - kesinlikle ... .NET 4 kadar LıNQ varlıkları ile mümkün değildir

Bir keresinde bir blog post on using SqlMetal.exe and subsequently modifying the generated schema yazdım - belki farklı bir motivasyona sahip olsa da, yararlı bulursunuz.

+0

Teşekkür ama provoke olup. – Tebo

+0

Lütfen, "Persistence Ignorance" ile ne demek istiyorsun? – Tebo

İlgili konular