我正在使用.net 3.5的Entity Framework 1.
我做的事情很简单:
var RoomDetails = context.Rooms.ToList();
foreach (var Room in Rooms)
{
Room.LastUpdated = DateTime.Now;
}
Run Code Online (Sandbox Code Playgroud)
我尝试这样做时收到此错误:
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
我收到错误:
无法更新EntitySet - 因为它具有DefiningQuery并且<ModificationFunctionMapping>元素中不存在<UpdateFunction>元素以支持当前操作.
我正在对上下文进行大量更新而没有任何问题,只有当我尝试更新此特定实体时才会这样做.
我所有的搜索都显示了同样的事情,即我正在尝试更新的实体上没有声明主键.但是,我确实有一个主键声明...
由于几个我无权谈论的原因,我们在Sql Server 2005数据库中定义了一个视图,如下所示:
CREATE VIEW [dbo].[MeterProvingStatisticsPoint]
AS
SELECT
CAST(0 AS BIGINT) AS 'RowNumber',
CAST(0 AS BIGINT) AS 'ProverTicketId',
CAST(0 AS INT) AS 'ReportNumber',
GETDATE() AS 'CompletedDateTime',
CAST(1.1 AS float) AS 'MeterFactor',
CAST(1.1 AS float) AS 'Density',
CAST(1.1 AS float) AS 'FlowRate',
CAST(1.1 AS float) AS 'Average',
CAST(1.1 AS float) AS 'StandardDeviation',
CAST(1.1 AS float) AS 'MeanPlus2XStandardDeviation',
CAST(1.1 AS float) AS 'MeanMinus2XStandardDeviation'
WHERE 0 = 1
Run Code Online (Sandbox Code Playgroud)
我们的想法是,实体框架将基于此查询创建一个实体,但它会生成一个包含以下内容的错误:
警告6002:表/视图'Keystone_Local.dbo.MeterProvingStatisticsPoint'没有定义主键.已推断密钥,并将定义创建为只读表/视图.
并且它决定CompletedDateTime字段将是此实体主键.
我们正在使用EdmGen生成模型.有没有办法不让实体框架包含此视图的任何字段作为主键?
entity-framework sql-server-2005 primary-key .net-3.5 sql-view
我想将一个新的自动增量主列添加到具有数据的现有表.我怎么做?
我首先添加了一个列,然后尝试添加一个序列,之后我失去了如何插入并将该列作为主键.
我只是从msdn实践代码第一个新的数据库实体框架,我想知道是否可以在代码中创建一个没有主键的表第一个新的数据库EF?
尝试将视图添加到edmx文件时,没有任何反应.
我使用wxl编辑器打开了edmx文件,我注意到以下错误:
警告6013:表/视图'CellularOrders.dbo.V_LINK'没有定义主键,也没有推断出有效的主键.此表/视图已被排除.要使用该实体,您需要检查您的架构,添加正确的密钥并取消注释.
(重要的东西 - 我没有也不需要将基于视图的表添加到edmx.此外,该视图仅用于对数据执行select语句)
因此,在数据库中,我更新了T_LINK表,并将其中一个反映在视图上的字段作为主键.然后,当我再次尝试将视图添加到edmx时,再也没有发生.
我怎么解决这个?是否可以选择在不对表做任何事情的情况下解决这个问题?我可以添加另一个视图,以某种方式包装旧视图但具有固定属性?
我先使用EF DB.
我已经提出了一个观点.
将其映射到EF.
现在我收到以下错误:
错误2错误111:Principal Role App引用的属性必须与Relationship MaMDBModel.FK_AppsData_App的关系约束中的Principal Role引用的EntityType MaMDBModel.App的键完全相同.确保在主体角色中指定了所有关键属性.D:\ MaM\Dev\MamAdmin_1.0\MaMDBEntityFramework\MaMModel.edmx 768 11 MaMDBEntityFramework
这是我的edmx:
我听说过一些参考资料,事实表上不需要pk.我相信每张桌子都应该有一个PK.
如果没有pk和10+外键,一个人怎么能理解事实表中的一行呢?
EF 6(代码优先)是否支持复杂类型集合(Value Object集合)映射?我知道它支持复杂类型,但还没有找到一个我们有一组复杂类型的例子.
例如,假设您有一个名为Student的实体,该实体具有一组联系人.对于NH,我可以简单地说学生有一组联系人,而联系人是一个组件(相当于ef中的复杂类型).这可以通过EF完成而不改变与实体的联系吗?
c# domain-driven-design entity-framework value-objects complextype
我有一个DbContext没有Dbset钥匙的。它在仅查询表的应用程序中工作。
public class MyDbContext : DbContext, IMyDbContext
{
public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { }
public DbSet<MyEntity> MyEntities { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<MyEntity>().HasNoKey(); // No key
modelBuilder.ApplyConfigurationsFromAssembly(typeof(MyDbContext).Assembly);
}
}
Run Code Online (Sandbox Code Playgroud)
我在测试项目 (xUnit) 中创建以下测试设置类:
public static class MyDbContextFactory
{
internal static MyDbContext Create()
{
var options = new DbContextOptionsBuilder<MyDbContext>()
.UseInMemoryDatabase(Guid.NewGuid().ToString())
.Options;
var context = new MyDbContext(options);
context.Database.EnsureCreated();
context.MyEnities.AddRange(new[] // This line got the error!!!
{
new MyEntity { Time = DateTime.Now, Instrument …Run Code Online (Sandbox Code Playgroud) 我有一个现有的数据库,我试图用它Entity Framework Code First From Database来生成C#实体.为此,我Add -> New Item -> ADO.NET Entity Data Model -> Code First from database在Visual Studio 2015中进行操作.当我Entity Data Model Wizard查看时,我看到每个表都被选中,但是当导入完成某些未创建的表的实体时.我已经尝试过两次并且双重检查确实选择了没有实体的表进行导入.导入过程中不会抛出任何错误,因此我不确定为什么有些表缺少权限.可能出现什么问题,如何为每个选定的表获取实体?
SQL为缺少的表之一创建表代码:
CREATE TABLE [dbo].[ProgramControl] (
[CodeName] VARCHAR (80) NULL,
[CodeValue1] VARCHAR (50) NULL,
[CodeValue2] VARCHAR (50) NULL,
[CodeValue3] VARCHAR (50) NULL,
[CodeValue4] VARCHAR (50) NULL,
[Description] TEXT NULL
);
Run Code Online (Sandbox Code Playgroud) 我正在使用的查询是这样的:
int? UserId = db.StudentModel//the question mark here makes the int nullable
.Where(c => c.UserName == certUserName)
.Select(c => c.UserId)
.First();
Run Code Online (Sandbox Code Playgroud)
不幸的是,这仅在数据库具有主键时才有效.由于数据库的特定结构和使用,不能有主键.即使没有PK,如何修改我的搜索以从数据库中提取完全相同的内容?
编辑:对不起!我应该更加明确.我猜错误本身不在于实际查询,它取决于模型的设置方式:
在模型生成期间检测到一个或多个验证错误:
IronGriffin.Models.CompletionsModel :: EntityType'CompletionsModel'没有定义键.定义此EntityType的键.
完成:EntityType:EntitySet'Completions'基于未定义键的类型'CompletionsModel'.
话虽如此,问题仍然是没有定义主键.我想如果通过搜索主键来搜索不起作用,这将全部起作用(除非它没有?我以为我读到的地方就是它的工作原理)
c# ×8
primary-key ×3
.net ×2
asp.net ×2
.net-3.5 ×1
complextype ×1
fact-table ×1
linq ×1
oracle ×1
sql ×1
sql-view ×1
unit-testing ×1
xunit ×1