不确定这个问题是否属于这里,但我希望有人能帮助我。
我已经对数据库进行了集成测试(使用 mssql localDB)。我希望每个测试都使用它自己的数据独立运行 - 我想在每个测试运行之前用我的假数据重新植入数据库。我试图用事务来实现它,但没有成功。这是我尝试将其关闭的方法:
public class TestDbInitializer : DropCreateAlways<MyContext>()
{
public static List<Item> Items;
public override Seed(DbContext context)
{
Items = new List<Item>();
// Adding items
// ..
Items.ForEach(x => context.Add(x));
context.SaveChanges();
}
}
public class BaseTransactionsTests
{
private TransactionScope _scope
[TestInitialize]
public void Initialize()
{
_scope = new TransactionScope();
}
[TestCleanup]
public void Cleanup()
{
_scope.Dispose();
}
}
[TestClass]
public class IntegrationTests : BaseTransactionsTests
private IDependenciesContainer _container;
public static void AssemblyInit(TestContext context)
{
Database.SetInitializer(new TestDbInitializer());
_container = …
Run Code Online (Sandbox Code Playgroud) 我首先使用 C# 实体框架代码。
我对数据库的了解几乎一无所有。我不知道这是常见的还是好的做法,所以我想问你们我应该怎么做。
假设我有一张字母表和一张车站表。
我开发了一个应用程序,可以将信件从一个站发送到其他站。每封信都可以发送到不同的站点——这是一种多对多的关系。
发送的每封信都与一个站相关联 - 信的源站(信不能发送到它自己的源站,等等)。
每个数据库实例代表一个站。
在应用程序启动时,我知道哪个站是我的源站,并希望将该信息保存在数据库中。
我应该如何保存哪个站是源站?我是否应该在每一行的站台表中都有一个标志,指示它是否是当前实例站?这对我来说听起来很糟糕。
有没有办法让表格只有 1 个值?例如,它将被称为 InstanceStation,它将只包含一行和一列 - StationId?这是一个好习惯吗?
我尽量说清楚,希望我的情况清楚。
database-design sql-server entity-framework c# sql-server-localdb