gpt4 book ai didi

c# - Entity Framework 不更新 Amazon RDS SQL 数据库

转载 作者:行者123 更新时间:2023-11-30 22:11:16 24 4
gpt4 key购买 nike

我有一个项目,其中包含一个 DomainClasses C# 库、一个使用 Domian 类的 DataAccess C# 库,最后是一个使用 DataLayer 的 WebAPI。此外,我还有一个 Amazon SQL RDS 数据库。

在我的 Controller 中创建上下文时,数据库不会创建与我的域类相关的表,如果我使用控制台管理器并在 Web API 上启用迁移,它会显示“未找到上下文类型”在程序集“WebApi”中

我在我的 API 的 Web 配置上有到 AWS RDS 数据库的连接,我还将它命名为与我在数据层中的上下文相同的名称。我是 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);
}
}

网络接口(interface)

<connectionStrings>
<add name="TestDataContext" providerName="System.Data.SqlClient" connectionString="my aws rds link"/>
</connectionStrings>

全局为

protected void Application_Start()
{
Database.SetInitializer(new TestDataInitialializer());
...
}

最佳答案

初始化不会发生,直到您从上下文中执行某些操作来与数据库交互。查询、savechanges 甚至直接 executesql 命令之一。还有一个命令 Database.Initialize,您可以通过传入 true 的 force 参数来强制执行它。

关于c# - Entity Framework 不更新 Amazon RDS SQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20320145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com