2010-01-07 101 views
2

在.NET 3.5SP1一個XML列,使用與ADO.NET實體框架

我在SQL Server中的表以某種方式定義如下:

CREATE TABLE Employee(
EmployeeId [int] IDENTITY(1,1) NOT NULL, 
UserName varchar(128) NOT NULL, 
[Name] nvarchar(200) NOT NULL, 
Address xml NULL, 
    ...) 

我這個映射表ADO.NET實體框架。我的問題是,XML列被映射到一個字符串數據類型。雖然這是一種預期的行爲,但我想提供我自己的自定義類型。

我試圖創建一個類

public class Address : IXmlSerializable { ... } 

,並試圖替換地址欄的string數據類型,以我自己的Address類型,但我不能找到一種方法,使實體框架理解我的自定義類型。

我讀了complex type,但它表示該值本身不能爲空,在我的情況下它可以爲空。

它可能和如何?

回答

2

您必須使用string作爲映射屬性。

但是,您可以在將字符串轉換爲自定義類型的分部類中添加自定義(附加)屬性。所以你可能會這樣做:

public partial class Employee 
{ 
    public Address EmployeeAddress 
    { 
     get 
     { 
      return new Address(this.MappedAddressProperty); 
     } 
    } 
} 

雖然你不能在LINQ to Entities中使用這些自定義屬性。

+0

我用你的想法,我擴大了它。謝謝。 – 2010-01-11 21:11:13