【发布时间】:2020-12-08 08:26:13
【问题描述】:
如何删除 SQL Lite 内存数据库中所有表的所有非空约束? 我有 Foreign Keys = false,要删除外键。
var InMemoryConnectionString = "DataSource=:memory:;Foreign Keys=False";
var _connection = new SqliteConnection(InMemoryConnectionString);
_connection.Open();
var options = new DbContextOptionsBuilder<TestContext>()
.UseSqlite(_connection)
.Options;
var testContext = new TestContext(options);
testContext.Database.EnsureCreated();
寻找删除所有约束将是一个更好的答案。
如果未填写所有必填字段,则会出现 Not null 错误。
var seedData= new List<Product>
{
new Product
{ ProductId = 1, Description = "test" },
new Product
{ ProductId = 2, Description = "test2" }
};
testContext.Product.AddRange(seedData);
testContext.SaveChanges();
错误: Microsoft.EntityFrameworkCore.DbUpdateException :更新条目时出错。有关详细信息,请参阅内部异常。 ---- Microsoft.Data.Sqlite.SqliteException:SQLite 错误 19:'NOT NULL 约束失败:Product.ProductNumber'。
【问题讨论】:
-
这是用于测试还是应用程序不需要非空约束?
-
这是 Code First 还是 Database First?我以前没有使用过内存数据库,但我之所以问,是因为如果它是 Code First,我相信您需要删除 Class 文件中的 FK。我不相信您可以将 Foreign Keys=False 添加到连接字符串并删除 FK。
-
向我们展示产品的模型。
-
嗨@rick 问题适用于所有表格
-
你可以随时创建一个没有约束的新表,复制数据,然后删除旧表
标签: c# .net entity-framework sqlite asp.net-core