2010-10-05 40 views
5

Chúng ta đều biết rằng LINQ to SQL (và SQLmetal/exe) thực sự là một sản phẩm chất lượng "nguyên mẫu" (nó thiếu các tính năng cơ bản như lược đồ "refresh" và phát hiện các cột null với giá trị mặc định).LINQ to SQL giá trị mặc định

Có cách nào để tự động tạo dbml của tôi (tương tự như LINQ to SQL hoặc sqlmetal) VÀ có nó phát hiện NOT NULL cột có giá trị mặc định?

Yêu cầu: Nó cần phải đơn giản là "dễ" để tạo dưới dạng linq-to-sql hoặc sqlmetal.


Làm rõ những gì tôi cần nó cho:

Tôi có nhiều bảng với DateCreatedDateModified lĩnh vực cũng như một số bit và enum-tương tự (int) cột với các giá trị mặc định; tất cả đều phải là và là not null.

Tôi sẽ cần tạo lại ("làm mới") .dbml sau khi thực hiện thay đổi đối với cơ sở dữ liệu ... vì vậy (lại) đặt thuộc tính Tự tạo (hoặc Auto-Sync) thành True không phải là thứ tôi thực sự quan tâm làm gần như mọi khi tôi cập nhật lược đồ.

Các mã sau (dựa trên Handling Default Values With LINQ to SQL):

namespace Project.Data 
{ 
    public partial class ProjectDataContext 
    { 
     partial void OnCreated() 
     { 
      if (this.DateCreated == null) 
      { 
       this.DateCreated = DateTime.UtcNow; 
      } 
     } 
    } 
} 

không biên dịch (lỗi với ... does not contain a definition for 'DateCreated' ...). Tôi thực sự thấy không có lý do nó nên biên dịch ... nhưng tôi đã cho nó một shot anyway. Có lẽ tôi không hiểu ngữ cảnh của đoạn mã từ ví dụ của anh ta.

+0

bản sao có thể có của [Làm cách nào để đảm bảo LINQ to Sql không ghi đè hoặc vi phạm các giá trị mặc định DB không null?] (http://stackoverflow.com/questions/201706/how-do-i-đảm bảo-linq-to-sql-không-ghi-hoặc-vi-không-null-db-default-v) – bzlm

+4

Bài đăng đó là 2 tuổi và gợi ý với ý tưởng rằng có thể một ngày được hỗ trợ. Tôi đang tìm xem hôm nay là ngày hôm đó không. :-) –

+0

có ai biết về tiến bộ này chưa? –

Trả lời

-1
this.DateCreated ?? DateTime.UtcNow 

?? có nghĩa là nếu bên trái là null thì hãy sử dụng bên phải

+1

thats true. Nhưng không thành vấn đề. –

+0

có. becus đối tượng linq là kiểu System.Nullable Bonshington