【发布时间】:2014-08-16 17:16:11
【问题描述】:
我有一个使用 Active Directory 进行身份验证的站点。我正在使用实体框架,我需要存储对此用户的引用。我不想在数据库中保存 AD 用户。一种方法是将用户 guid 作为字符串存储在实体中。
class Entity
{
String UserGUID ;
}
有没有可能是这样的:
class Entity
{
UserPrincipal user;
}
不是传递字符串 GUID,而是传递一个对象并使实体框架在某种程度上将关联视为 UserPrincipal 对象是一个实体。它不必是 UserPrincipal 类,它可以是另一个类。我想处理对象而不是字符串。查询活动目录不是问题。
总而言之,我希望能够通过将字符串 GUID 存储在数据库中但将其作为对象加载来将实体与非实体类相关联。
[更新]
许多类可能与 AD 用户有多个关联,并且可能会有所不同,因此基类不是解决方案。例如,我可能有一个这样的类:
class Message
{
public User Sender;
public User Recipient;
public List<User> MentionedUsers;
}
这不是我正在使用的课程,但它说明了我的观点。理想情况下,用户 guid 将存储在消息实体表中,但作为用户加载,就像实体框架对其他实体所做的那样。
我正在考虑将 User 创建为 GUID 的包装实体类并使用静态方法检索属性,但我想避免这种情况。
【问题讨论】:
-
您是先使用代码还是先使用数据库?首先使用代码很容易做到这一点,但不确定首先使用数据库。编辑:实际上,在数据库中也应该可以。
-
我先使用代码。新数据库。
-
请告诉我,为什么要将
Guid存储为string而不是Guid? (msdn.microsoft.com/en-us/library/system.guid(v=vs.110).aspx) -
@Mitch 这是一个有效的问题,但它几乎不会影响 Daniel 上面提出的问题。
-
如果您希望它像上面示例中所示的那样工作,您唯一的选择是分叉和修改实体框架 - 它只是不符合您的要求。下面是一个简单的解决方法,在您使用这些类时将不可见。我将在下面添加一个处理用户列表的方法示例。
标签: c# .net entity-framework asp.net-mvc-5