我有一个现有的数据库,我想用它来构建一个使用EF4.0
的新应用程序
有些表没有定义主键,因此当我创建一个新的实体数据模型时,我会得到以下消息:
The table/view TABLE_NAME does not have a primary key defined
and no valid primary key could be inferred. This table/view has
been excluded. To use the entity, you will need to review your schema,
add the correct keys, and uncomment it.
如果我想使用它们并修改数据,我是否必须向这些表添加PK,或者是否有解决方法使我不必这样做?
发布于 2011-10-05 06:05:20
我认为这是由Tillito解决的:
Entity Framework and SQL Server View
我将在下面引用他的条目:
我们有同样的问题,下面是解决方案:
若要强制实体框架将列用作主键,请使用ISNULL。
若要强制实体框架不将列用作主键,请使用NULLIF。
应用它的一种简单方法是将视图的select语句包装在另一个select语句中。
示例:
SELECT
ISNULL(MyPrimaryID,-999) MyPrimaryID,
NULLIF(AnotherProperty,'') AnotherProperty
FROM ( ... ) AS temp
10年4月26日17:00由Tillito回答
发布于 2016-11-18 22:42:01
组合键也可以使用Entity Framework Fluent API来完成
public class MyModelConfiguration : EntityTypeConfiguration<MyModel>
{
public MyModelConfiguration()
{
ToTable("MY_MODEL_TABLE");
HasKey(x => new { x.SourceId, x.StartDate, x.EndDate, x.GmsDate });
...
}
}
发布于 2014-02-11 09:18:47
在我的例子中,我必须将一个实体映射到一个没有主键的View。此外,我不被允许修改这个视图。幸运的是,这个视图有一个唯一的字符串列。我的解决方案是将此列标记为主键:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(255)]
public string UserSID { get; set; }
作弊的EF。工作得很好,没人注意到...:)
https://stackoverflow.com/questions/3996782
复制相似问题