我有一个包含DomainClasses C#库,使用Domian类的DataAccess C#库以及最后一个使用DataLayer的WebAPI的项目。另外,我有一个Amazon SQL RDS数据库。
在我的控制器上创建了上下文之后,数据库不会创建与我的域类相关的表,如果我在Web API上使用控制台管理器和Enable-Migrations,它会向我显示“在程序集中找不到上下文类型“ WebApi””
我在API的Web配置中具有与AWS RDS db的连接,并且在数据层中还为其命名了与上下文相同的名称。我是EF的新手。
每次我运行应用程序时,我都希望数据库具有表,但是在那里什么也没有发生。
谢谢
我的代码的这一部分
域类:
public class SensorSession
{
public int Id { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public virtual UserTest User { get; set; }
public virtual List<SensorTest> SensorsCollected { get; set; }
}
public class SensorTest
{
public int Id { get; set; }
public int HeartRate { get; set; }
public int SkinConductivity { get; set; }
public int Temperature {get; set;}
public int Movement { get; set; }
public int IndoorPositioning { get; set; }
public DateTime CollectedDateTime { get; set; }
}
public class UserTest
{
public int Id { get; set; }
public string Name { get; set; }
public int ProviderId { get; set; }
}
数据层
namespace DataLayer
{
public class TestDataContext:DbContext
{
public DbSet<SensorSession> SensorSessions { get; set; }
public DbSet<SensorTest> SensorTests { get; set; }
public DbSet<UserTest> UserTests { get; set; }
}
}
public class TestDataInitialializer : DropCreateDatabaseAlways<TestDataContext>
{
protected override void Seed(TestDataContext context)
{
var testUser = new UserTest
{
Name = "Denis",
ProviderId = 1
};
var sensorTest = new SensorTest
{
CollectedDateTime = DateTime.Now,
HeartRate = 74,
IndoorPositioning = 1,
Movement = 2,
SkinConductivity = 3,
Temperature = 30
};
new List<SensorSession>
{ new SensorSession
{
StartDate = DateTime.Now,
EndDate = DateTime.Now,
User = testUser,
SensorsCollected = new List<SensorTest> { sensorTest }
}
}.ForEach(b => context.SensorSessions.Add(b));
base.Seed(context);
}
}
WEB API
<connectionStrings>
<add name="TestDataContext" providerName="System.Data.SqlClient" connectionString="my aws rds link"/>
</connectionStrings>
全局为
protected void Application_Start()
{
Database.SetInitializer(new TestDataInitialializer());
...
}
除非您执行一些操作以从上下文与数据库进行交互,否则初始化不会发生。查询,保存更改或什至直接执行SQL命令之一。还有一个Database.Initialize命令,您可以通过传入force参数true来强制执行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句