2011-08-24 104 views
1

據我所知,要保存在數據庫中的屬性不能是隻讀。 IIdentity屬性:AuthenticationType,IsAuthenticated和Name都是隻讀的。實體框架和IPrincipal/IIdentity的實現

是使包裝的屬性,需要保存唯一的解決方案或有更好的?

編輯: 我可能沒有解釋我的問題。下面是隻讀屬性的一個示例代碼,我已經加入UserName屬性的實體框架:

Public Property UserName As String 
    Get 
     Return _userName 
    End Get 
    Private Set(value As String) 
     userName = value 
    End Set 

Public ReadOnly Property Name As String Implements System.Security.Principal.IIdentity.Name 
    Get 
     Return UserName 
    End Get 
End Property 

我想要問的是,如果有做的任何更好的辦法。

回答

1

IIdentity屬性是隻讀的,但實現可以有setter。如果您正在使用EDMX來映射您don't have to expose these setters as public

編輯:

這是在C#中可能的,所以希望你可以用類似的方法用VB.NET(我只能讀VB代碼,不寫):

public interface ITest { 
    string Name { get; } 
} 

public class Test : ITest { 
    public string Name { get; set; } 
} 

類提供二傳手甚至界面沒有定義它。

+0

使用代碼首先,不是EDMX,但您的示例與我一直在做的類似(我使用Get和Private Set修改了我的問題的UserName屬性,以便您可以看到我一直這樣做的方式)。我只是想知道,因爲我找不到任何其他方式,如果有更好的方法做或不做。 – Minnie

+0

在代碼優先的情況下,它應該仍然是相同的,但是setter必須對您的上下文或配置類可見。 –

+0

你會像這樣編碼:public string Name {get; **內部**設置; }? – Minnie

0

EF堅持對象,而不是接口。你的對象可以擁有你想要的任何屬性。您不能將接口添加到實體模型,但可以添加實現該接口的對象類型。