有关ADO.NET实体框架的问题,.NET Framework的对象关系映射(ORM)工具。如果适用,请添加特定于版本的标记。不要将此标记用于Entity-Framework核心问题。请改用entity-framework-core。
这是一个非常小的代码优先 EF6 项目。我成功添加了迁移并更新了数据库。这是输出: PM> 更新数据库-详细 使用启动项目“ChattyServer”。 使用
如何将连接字符串传递到实体框架的代码优先 DbContext?当 DbContext 和 web.config 中的连接字符串位于同一项目中时,我的数据库生成工作正常...
以下情况会发生什么? //开启交易 使用 var transaction = _context.Database.BeginTransaction(); // 在不调用 Commit 或 Rollback 的情况下执行操作 返回; 这会不会……
我正在寻找使用实体框架在数据库中执行查询的替代方案,我想知道是否可以使用 EF 而不是 usi 直接从应用程序触发查询...
以下代码: var dynamicQuery = from a in _context.Users select a; string[] args = new string[] { "aa", "bb", "cc" }; foreach(参数中的字符串单词) {
EF Core - 数据库优先脚手架创建 DTO/聚合与实体
我通常使用代码优先方法,并决定在现有工作数据库上使用 EF Core 8 和数据库优先方法。 看起来 EF Core 在
我有一个使用 Postgresql 的简单 EF 实现,它返回错误 {“42703:列b.Id不存在 位置:8"}。也许您想引用“...
我一直在尝试遵循本教程... http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-an-entity-framework-data- model-for-an-asp-net-mvc-application 但我保留 g...
在Mac M系列芯片上运行测试时。我使用骑手测试资源管理器来运行测试。 Microsoft.Data.Sqlite.SqliteException:SQLite错误1:'dlopen(mod_spatialite.dylib,0x000A):尝试:'
在 Entity Framework Core 6.0.8 中执行动态查询的问题
我在我的项目中使用了 EF 6.0.8 在这里,您可以看到我的代码示例 var searchCriteria = CreateSearchString(model); if (!string.IsNullOrEmpty(searchCriteria)) { 结果=!字符串。
我正在学习 ASP.NET MVC5 和实体框架。在我的学习中,我使用 Lynda 视频教程,但我被困在 Nuget 控制台,必须运行以下代码: 启用迁移 -
我正在关注 Microsoft 的 .NET MVC 教程,并尝试处理与 EF Core 的多对多关系。 https://learn.microsoft.com/en-us/ef/core/modeling/relationships/many-to-many 和
Entity Framework Core 6.0.8 中的动态查询问题
我在我的项目中使用了 EF 6.0.8 在这里,您可以看到我的代码示例 var searchCriteria = CreateSearchString(model); if (!string.IsNullOrEmpty(searchCriteria)) { 结果=!字符串。
{“无法将‘System.String’类型的对象转换为‘System.Guid’类型。”} System.InvalidCastException
这是我服务中的方法。 公共异步任务 CheckEmail(字符串电子邮件) { var result = wait _db.InvitedUser.SingleOrDefaultAsync(_ => _.Email == Email); 返回...
我有简单的数据库模型: 公开课菜谱 { 公共 int id { 得到;放; } 公共字符串标题{获取;放; } 公共字符串描述{获取;放; } 公共字符串 imageUrl { 获取;...
我的桌子和班级设置 我有一个数据库,正在尝试为其设计 ASP.NET Web API,但是在尝试更新列表中的元素时遇到问题。 我使用的表格是
有人可以帮助我,我正在尝试发送 POST 申请。但我不明白为什么它不起作用。 这是我的模型: 公共部分类 LineModel : IModel { 公共线路模型() ...
我错误地认为,如果我删除了数据库中的表,那么 EF 会在下次运行 update-database 时重新创建一个空表。 现在我有一个丢失的表,因此应用程序抛出异常...
为什么在我的 blazor 页面中 dbcontext 似乎变成了只读?
我有一个如下所示的 Blazor 页面: @注入 IDbContextFactory DbFactory 我有一个如下所示的 Blazor 页面: @inject IDbContextFactory<MyContext> DbFactory <EditForm EditContext="@editContext" OnSubmit="@Submit" FormName="create"> ... ... ... <button type="submit" class="w-100 btn btn-lg btn-primary">Create</button> </EditForm> @code { ... private async Task Submit() { using var dbcontext = DbFactory.CreateDbContext(); MyObject c = new MyObject { MyMember1="abc", MyMember2="123" }; dbcontext.MyObjects.Add(c); await dbcontext.SaveChangesAsync(); } } 在Program.cs中,工厂是这样声明的: builder.Services.AddDbContextFactory<MyContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("BlazorAppContext") ?? throw new InvalidOperationException("Connection string 'BlazorAppContext' not found."))); MyObject声明如下: public class MyBaseObject { public Int32 Id { get; set; } public string? MyMember1{ get; set; } public string? MyMember2 { get; set; } public MyBaseObject() { } public MyBaseObject(MyBaseObject mybaseObject) { MyMember1 = mybaseObject.MyMember1; MyMember2 = mybaseObject.MyMember2; } public void AssignBase(MyBaseObject mybaseObject) { MyMember1 = mybaseObject.MyMember1; MyMember2 = mybaseObject.MyMember2; } } public class MyObject : MyBaseObject { public MyObject() : base() { } public MyObject(MyBaseObject baseobject) : base(baseobject) { } } 对象“c”已正确创建,在将 c 添加到 dbcontext.MyObjects 之前,MyObjects 包含从 SQL Server Express 数据库正确获取的两个对象。 在Add(c)之后,dbcontext.MyObjects的内容和之前一样,所以只有两个对象。看来 dbcontext 忽略了 Add 语句或者它是只读的。 在 DatabaseInitiator 类中,它工作正常,并且数据库已正确填充初始数据。 我希望 dbcontext.MyObjects 拥有三个元素,并将我的“c”添加到现有的两个元素中,但这并没有发生。 那么,为什么 Blazor 页面中我的 dbcontext 似乎是只读的? 谢谢大家。 关于 SaveChanges 上的 PK 违规:这些通常是由以下两种情况之一引起的:PK 未设置为作为身份运行且未在代码中指定唯一 ID,或者尝试使用以下方式将引用关联到现有行:这些相关实体的未追踪副本。 身份PK 默认情况下,大多数数据库提供程序和 EF 会将名为“Id”或“{EntityName}Id”/“{EntityName}_Id”(即 MyObjectId)的 int/long 属性识别为将由数据库填充的标识列保存。但是,某些数据库(例如内存数据库)不提供此功能,因此身份行为将被忽略。当尝试插入 ID 为 0 的行(其中已存在具有该 ID 的行)时,这可能会导致错误。如果您使用非常规 PK 名称(例如“MyObjectKey”),那么您需要将其标识为 PK 和标识列。由于您的数据库名为“Id”,只要您使用支持标识列的数据库,就不应该出现这种情况。 未跟踪的参考文献 这将涉及创建一个新的 MyObject,该对象引用另一个现有实体。例如,如果 MyObject 引用了 Status,它是指向 Statuses 查找表的实体,并且您执行了类似的操作: using var dbcontext = DbFactory.CreateDbContext(); MyObject c = new MyObject { MyMember1="abc", MyMember2="123", Status = new Status { StatusId == 1 } // "New" status }; dbcontext.MyObjects.Add(c); await dbcontext.SaveChangesAsync(); 这会导致 PK 错误。虽然您可能只想插入 MyObject 并引用“New”/w ID 1 的现有状态,但 DbContext 不会跟踪该状态,因此它将被解释为新状态。这包括您可能将状态“实体”传递到此方法的情况,例如从 Web 客户端返回的引用。 相反,您希望确保对数据库中现有记录的任何引用首先由 DbContext 加载和跟踪。这确保它知道将新实体关联到现有引用,而不是尝试插入新引用: var status = dbContext.Statuses.Single(x => x.StatusId == 1); // "New status" MyObject c = new MyObject { MyMember1="abc", MyMember2="123", Status = status };
考虑联合会、冠军赛和球队的场景,一个联合会有很多冠军,一个冠军有很多球队。创建联盟时,需要