技术标签: C# SQL. SQL-Server. 实体框架
我只是遵循我项目的实体框架代码第一个方法,我遇到了一些问题。我总是被迫使用命令重新生成DB。但是,现在我设法得到了那个稳定的。我有一个场景,在这方面,框架正在创建迁移脚本不是逻辑的,可能是我缺少一些东西,需要你的帮助
方案是 - 我已经启用了迁移,它创建了所有表设置的InitialCreate类,我对此印象深刻。但是当我在实体中改变时,例如,我有交易课
我添加了名为lendername,borrowername和运行teh迁移脚本的新属性,它为我创建了迁移脚本,
public partial class LenderBorrowerName : DbMigration
{
public override void Up()
{
DropColumn("dbo.Deals", "LenderName");
DropColumn("dbo.Deals", "BorrowerName");
DropColumn("dbo.Deals", "Discriminator");
}
public override void Down()
{
AddColumn("dbo.Deals", "Discriminator", c => c.String(nullable: false, maxLength: 128));
AddColumn("dbo.Deals", "BorrowerName", c => c.String());
AddColumn("dbo.Deals", "LenderName", c => c.String());
}
}
问题是,原始数据库没有此字段,并且通过此迁移脚本它假设添加到数据库。要更新这些字段,如果我运行更新迁移--Force,它会因为上面的up()函数而失败,因为它尝试从表中删除列。为什么Microsoft正在添加那个丢弃脚本,是开发人员需要手动删除吗?请帮忙
这里的提示是 Discriminator柱子。 EF应用默认策略来实现称为TPH的继承,表格为单层次结构。这 Discriminator 当您在实体之间继承时,EF会自动生成字段。
似乎您在模型中做了更多的更改,而不是将这两个属性添加到现有实体:您可能从派生类移动到基类或相反的方式。看来你的 DbContext 只包括A. DbSet 对于基础实体或派生实体,但不是两者。请注意,默认情况下迁移仅包括包含在您的实体 DbContext 作为 DbSets (您还可以在您的映射中明确包含或排除它们)。因此,您的迁移仅生成您的实体的字段 DbContext,而不是另一个,并且EF正在解释您删除了这些属性,这就是您获得的原因 DropColumn 句子。
所以这里的解决方案是添加丢失的 DbSet 到了 DbContext 并再次生成迁移。
这里 您可以有更多关于TPH的信息。
跑步后可能是一个不同的解释 Update-Database 和 Add-Migration 几次和使用 -force 参数您的数据库已留在与您的内容不一致的状态 __MigrationHistory 桌子。我的建议如果可能,会手动删除数据库,如果可能,会生成一个干净的 Initial 迁移并运行它。
在一个项目中往往会有许多的新增和修改,因为如果把新增和修改一直分开来写的话,那么它的代码量将会很多,所以有时候我们可以把新增和修改的代码放在一起,使代码实现优化。新增跟修改之所以能写在一块是因为新增比修改多了一个主键ID。当新增和修改出现了这个条件,那么代码就可以减少一点了。 新增:Model实体.表.Add(新增表数据) 修改:Model实体.Entry(具体的数据).state = Entit...
需求:客户端查询4个实体不同id的需求,但查询的方法是同一个,后台是遍历循环每个ID传入到这个方法里面依次执行。 问题:查询的数据量过大,依次执行耗时过长。 解决方案:开启多线程,循环一次就开启一个线程去执行这个方法,不用等待前面的查询。节约大量一半查询时间。 实现:...
前言 当多个线程启动,访问一个实例中的一个方法时,执行情况如何,是等待一个线程执行完成还是同时处理?数据又该如何处理? Java虚拟机运行时数据区的组成 由五个部分组成,分别是:方法区,堆,栈,本地方法栈,程序计数器 堆:保存所有引用数据的真实信息(共享) 栈:基本类型,数据运算,执行堆的指针等(私有) 方法区:所有定义的方法等信息(共享) 程序计数器:非常小的一块内存,表明程序运行到什么地步、位...
class Program { static void Main(string[] args) { int[] ray = { 78, 2, 43, 21, 1 };...
最近项目中遇到一个问题。就是我们的业务订单申请退款的场景。由于申请退款需要先更新订单的状态为退款中;然后发起了第三方支付平台的退款请求,第三方回调回来的时候,前一步的更新订单为退款中未完成事务。导致了退款回调处理失败。 先发下之前的存在问题的调用关系图: 修改后的关系图: 产生上面的问题原因,我们经过分析后,是在订单服务的订单更新方法添加了spring事务注解@Transaction...
前提条件:Eclipse已经整合了Maven。 简单配置Maven 已经配置好的,请跳过 配置Maven的路径: window - preferences 找到Maven展开 点击ADD 在弹出的对话框中点击 Directory,选择Maven的路径,选择到Maven的根目录即可,不需要到bin目录!! 勾选新添加的Maven安装路径,点击Apply 配置Maven的仓库 ...
本地安装Nacos,启动时报错 Unable to start embedded Tomcat org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerEx...
VLOOKUP和MATCH函数 INDEX和MATCH函数 2.INDEX MATCH 反向查找 反向查找方法2: choose函数 =VLOOKUP(B2,CHOOSE({1,2},$E2:2:2:E9,9,9,D2:2:2:D$9),2,) 反向查找方法3: IF函数 =VLOOKUP(B2,if({1,2},$E2:2:2:E9,9,9,D2:2:2:D$9),2,) 3.分段区间的数据查询...
1、先下载MySQL,下载地址:https://dev.mysql.com/downloads/file/?id=476460 如图选择下载: 2、下载后解压对应的文件mysql-8.0.11-macos10.13-x86_64.dmg,得到如下图所示的pkg包,双击下面的pkg包, 3、双击后显示下图,并点击“继续”按钮。 4、一路点击“继续”就可...
开篇 上篇我们主要是讲述了《WorkFlow扩展篇Step.1—集合分组下的活动使用[上]-WF4.0》如何使用集合Collection活动完成工作流的设计与开发,本篇我们将要继续 讲述集合活动内的另外二个活动的用法。 摘要 本篇我们是扩展篇的第二篇,本篇主要是讲述Collection的用法,一般来说...
I have a Win32 app that displays a console window in the back. How can I, using NetBeans/C++, remove this console window? Thanks in advance. you might want to go for "Right-Mouse-Button: Properti...
I'd like to drop an object and then move it back to the top and let it fall again. The first part is working, but then the node seems to lose its gravity and isn't falling again. It looks like its phy...
Issue: I have a program where I will be showing several pages with a stacked widget, and users will have to press a button (using code I've written below) to go to the next page of the stacked widget....
I wanted to initialize a port name. The port is an array and my code does not work. The code below would work by giving clk with a name "clk". However clk port is not an array: How do I name...
In an xpages application a javav source code was added to the Local folder within the Lotus nsf file. Now can not be seen, and can not be found with search. The code still woking, but it is not possib...