【发布时间】:2010-03-05 20:54:40
【问题描述】:
我一直在阅读有关使用 LINQ 和实体将 ASP.NET 成员资格提供程序移植到 .NET 3.5 的内容。但是,每个示例显示的 DB 模型都是较新的模型,而我继承了一个相当旧的模型。差异:
- User 表拆分为一对User & Membership 表。
- 数据库中的所有表都以 aspnet_ 开头
- 我有一些列(用户名、电子邮件等)的降低版本
为此,我已将 Membership 表中的属性复制到 User 表中(在 DB 中,这是 11 关系,而不是 10,1),将 aspnet_Applications 重命名为 Application, aspnet_Profiles 到 Profile,aspnet_Users 到 User,aspnet_Roles 到 Role。 (见图)
Image http://content.screencast.com/users/Keith.Barrows/folders/Jing/media/c3cabe76-272d-4a33-b924-8d2c50e45e9c/EFMembership.png
Link to full size image of model
现在,我在尝试编译时遇到了两个问题之一。
- 使用图像中的模型我收到此错误:从第 464 行开始的映射片段问题:EntitySets 'UserSet' 和 'aspnet_Membership' 都映射到表 'aspnet_Membership'。它们的主键可能会发生冲突。
- 如果我从我的模型中删除 aspnet_Membership 表(以处理上述错误),我会得到:从第 384 行开始的映射片段问题:必须映射表 aspnet_Membership 中的列 aspnet_Membership.ApplicationId:它没有默认值值并且不能为空。
我手动编辑后备商店的能力不是最好的,我不想只是破解可能会破坏其他东西的东西。我正在寻找建议、最佳实践等来处理这个问题。
注意:移动数据表本身不是一种选择,因为我无法替换现有应用程序中的所有逻辑。我正在为一个新的应用程序构建这个 EF 提供程序。在接下来的 6 个月内,旧应用程序将逐步迁移到新结构。
注意:我在图片下方添加了一个指向完整尺寸图片的链接,以便更好地查看。
【问题讨论】:
标签: entity-framework entity-relationship ado.net-entity-data-model