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

标签 c# entity-framework amazon-web-services code-first asp.net-web-api

我有一个项目,其中包含 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);
        }
    }

WEB API

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

全局为

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

最佳答案

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

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

相关文章:

amazon-web-services - AWS Beanstalk 中的 Wsgi 进程和线程数设置

C# Lambda => 会产生垃圾吗?

C# - 日期/时间格式化

c# -\如果另一个实体与表同名,则无法将实体映射到表

entity-framework - 在 Entity Framework 代码中,有没有办法向导航集合添加分页?

amazon-web-services - CLOUDFRONT EC2 源错误 CloudFront 尝试与源建立连接

c# - 上下移动 ListViewItems

c# - 连接集合中对象的属性。

c# - 尽管使用 *include* 仍出现 ObjectDisposeException

amazon-web-services - 如何在cloudwatch中添加IP地址到日志流名称