实体框架和IPrincipal / IIdentity的实施

时间:2011-08-24 17:13:10

标签: entity-framework

据我所知,对于要保存在数据库中的属性,它不能是ReadOnly。 IIdentity属性:AuthenticationType,IsAuthenticated和Name都是ReadOnly。

是否将包装器设置为需要保存的唯一解决方案或更好的解决方案?

编辑: 我可能没有很好地解释我的问题。以下是其中一个ReadOnly属性的示例代码,我为Entity Framework添加了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

我想问的是,是否有更好的方法。

2 个答案:

答案 0 :(得分: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; }
}

该类提供了setter,即使接口没有定义它。

答案 1 :(得分:0)

EF持久存储对象,而不是接口。您的对象可以具有您希望的任何属性。您无法向实体模型添加接口,但可以添加实现该接口的对象类型。