2010-06-23 45 views
6

Tôi đang làm việc với một Oracle DB, và tôi đang cố gắng để lập bản đồ lớp này:Mapping chuỗi lớn với thành thạo NHibernate

public class Book 
{ 
    public virtual int Id { get; private set; } 
    public virtual string Author { get; set; } 
    public virtual string Title { get; set; } 
    public virtual string Text { get; set; } 
} 

Với lớp này lập bản đồ:

public class BookMap : ClassMap<Book> 
{ 
    public BookMap() 
    { 
     Id(x => x.Id); 
     Map(x => x.Author); 
     Map(x => x.Title); 
     Map(x => x.Text); 
    } 
} 

Nhưng cột loại mà nó tạo ra cho tôi là NVARCHAR (255), và thuộc tính Book.Text có nhiều hơn 255 ký tự.

Làm cách nào để ánh xạ nó tới một loại có thể chứa chuỗi rất lớn (ví dụ CLOB)?

+0

thấy http://stackoverflow.com/questions/2343105/override-for-fluent-nhibernate-for-long-text-strings-nvarcharmax-not-nvarchar –

Trả lời

9
public class BookMap : ClassMap<Book> 
{ 
    public BookMap() 
    { 
     Id(x => x.Id); 
     Map(x => x.Author); 
     Map(x => x.Title); 
     Map(x => x.Text).CustomSqlType("CLOB"); 
    } 
} 

hoặc

public class BookMap : ClassMap<Book> 
{ 
    public BookMap() 
    { 
     Id(x => x.Id); 
     Map(x => x.Author); 
     Map(x => x.Title); 
     Map(x => x.Text).Length(500); // nvarchar(500) 
    } 
} 
+2

Đỗ bạn có nghĩa là 'CustomType (" StringClob ")'? –

+0

@ChrisS. StringClob là cho SQL Server, câu hỏi là về Oracle –

+0

StringClob không hoạt động trên SQL Server 2008. –

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