2011-01-05 38 views
7

Tôi đang sử dụng mẫu posted in this thread để tạo C# enums từ một vài bảng tra cứu trong SQL Server trong thư viện lớp chứa DAL của tôi.T4 Mẫu và chuỗi kết nối trong thư viện lớp

Hiện tại, tôi có chuỗi kết nối được sử dụng bởi các mẫu được nhúng một mẫu bao gồm tệp trong thư viện lớp. Có cách thuận tiện để có mẫu lấy chuỗi kết nối từ web.config dự án chính (WAP) mà không cần phải bao gồm một đường dẫn vật lý? Hoặc là có cách nào tốt hơn để tiếp cận điều này?

Sửa

Tôi cũng đã xem xét việc tạo ra một assembly SQL CLR trả về một chức năng bảng giá trị có chứa các nội dung enum (mà sau đó sẽ được xác định trong C#, không phải trong cơ sở dữ liệu), nhưng tôi m không chắc chắn những gì các hit hiệu suất sẽ được. Cho dù có hay không nó rõ ràng sẽ rõ ràng là phụ thuộc vào ứng dụng nhưng tôi ghét phải tính phí xuống một con đường crappy nếu đó là một cách tiếp cận tốt nhất tránh-điều này.

Trả lời

10

tôi đã sử dụng phương pháp sau đây để đọc từ web.config khi thực hiện các T4 mẫu

<# var path = Host.ResolvePath(@"..\..\www"); #> 

nơi ..\..\www là đường dẫn tương đối đến thư mục mà web.config của tôi nằm trong mối quan hệ với vị trí mẫu T4 của tôi đang được thực hiện

var config = ConfigurationManager.OpenMappedExeConfiguration(
    new ExeConfigurationFileMap { ExeConfigFilename = location [email protected]"\web.config" }, 
    ConfigurationUserLevel.None); 

var connStrings = config.ConnectionStrings; 
+0

Tôi đã hy vọng không phải có đường dẫn mã cứng dưới mọi hình thức, nhưng có vẻ như điều đó sẽ không xảy ra. Cảm ơn. –

+3

Tất nhiên bạn cần phải nói cho mẫu biết vị trí của nó tương đối như thế nào với cấu hình của bạn, nhưng đó không được coi là hardcoding ... bạn có thể di chuyển giải pháp của bạn như điên như bạn muốn, miễn là vị trí tương đối giữa các dự án là như nhau vẫn làm việc. –

Các vấn đề liên quan