我有一个包含员工姓名和员工ID的旧表。现在,员工ID在char中,因为它可以保存以字母开头的值。员工ID是表中唯一可用的唯一字段。
现在我正在使用一个视图来捕获表中的数据(它位于一个单独的数据库中)。但由于缺少int主键,我的实体框架拒绝识别视图。
任何解决方案都会受到高度赞赏,因为我无法触及旧表。
答案 0 :(得分:6)
但由于缺少int主键,我的实体框架拒绝识别视图。
我对此表示怀疑。 EF支持字符串作为PK。
但是,观点当然不能有PK。这意味着在将它们与EF一起使用时,您必须做一些额外的工作,特别是如果您使它们可更新。 Here's how
答案 1 :(得分:1)
创建另一个int列,并将其用作主键。业务用户不需要知道该密钥。
我的猜测是最终应用程序使用带有章程的员工ID。像第一个和最后一个初始加上雇用日期,像DB012210。
如何在内部完成表对调用应用程序无关紧要,因此您可以添加另一个字段作为真正的主键,即int。然后只对当前的EmployeeId设置一个唯一约束,但不要将它真正用作主键。