Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么不是';我的数据库是否在实体框架中更新?只是想让种子数据通过_C#_Asp.net_Entity Framework_Asp.net Mvc 5_Entity Framework 6 - Fatal编程技术网

C# 为什么不是';我的数据库是否在实体框架中更新?只是想让种子数据通过

C# 为什么不是';我的数据库是否在实体框架中更新?只是想让种子数据通过,c#,asp.net,entity-framework,asp.net-mvc-5,entity-framework-6,C#,Asp.net,Entity Framework,Asp.net Mvc 5,Entity Framework 6,我不明白为什么我的数据库没有更新。它不断显示旧数据,如“user1”=mike,但“user2”=unknown而不是Tim。我所要做的就是把数据植入数据库,不做任何额外的事情 谢谢 namespace DatabaseDesign.DAL { public class PrivateMessageInitializer : System.Data.Entity.DropCreateDatabaseAlways<PrivateMessageContext> //DropCreate

我不明白为什么我的数据库没有更新。它不断显示旧数据,如“user1”=mike,但“user2”=unknown而不是Tim。我所要做的就是把数据植入数据库,不做任何额外的事情

谢谢

namespace DatabaseDesign.DAL
{
public class PrivateMessageInitializer :  System.Data.Entity.DropCreateDatabaseAlways<PrivateMessageContext> //DropCreateDatabaseIfModelChanges<PrivateMessageContext>
{
    protected override void Seed(PrivateMessageContext context)
    {

        var PrivateMessageHistory = new PrivateMessageHeader();
        var msgItems =  new PrivateMessageDetail { FromUser="mike", MessageDate = DateTime.Now, Message="message 1", PrivateMessageDetailId = 1, PrivateMessageHeaderId = 1 };
        var msgItems2 = new PrivateMessageDetail { FromUser="mike", MessageDate = DateTime.Now, Message="message 2", PrivateMessageDetailId = 2, PrivateMessageHeaderId = 1 };
        var msgItems3 = new PrivateMessageDetail { FromUser="mike", MessageDate = DateTime.Now, Message="message 3", PrivateMessageDetailId = 3, PrivateMessageHeaderId = 1 };
        var msgItems4 = new PrivateMessageDetail { FromUser="mike", MessageDate = DateTime.Now, Message="message 4", PrivateMessageDetailId = 4, PrivateMessageHeaderId = 1 };
        var msgItems5 = new PrivateMessageDetail { FromUser = "mike", MessageDate = DateTime.Now, Message = "message 5", PrivateMessageDetailId = 5, PrivateMessageHeaderId = 1 };
        PrivateMessageHistory.Messages.Add( msgItems );
        PrivateMessageHistory.Messages.Add(msgItems2);
        PrivateMessageHistory.Messages.Add(msgItems3);
        PrivateMessageHistory.Messages.Add(msgItems4);
        PrivateMessageHistory.Messages.Add(msgItems5);

        context.PrivateMessageHeader.Add(PrivateMessageHistory);

        context.SaveChanges();

    }
}
}

public class PrivateMessageContext : DbContext
{
    public PrivateMessageContext()
        : base("PrivateMessageContext")
    {

    }
    public DbSet<PrivateMessageHeader> PrivateMessageHeader { get; set; }
    public DbSet<PrivateMessageDetail> PrivateMessageDetail { get; set; }


}

namespace DatabaseDesign.Models
{
public class PrivateMessageHeader
{
    public int PrivateMessageHeaderId { get; set; }
    public PrivateMessageHeader() { this.Messages = new List<PrivateMessageDetail>();  }
    public DateTime TimeStamp { get; set; } // Date of the start of thread
    public string User1 { get; set; }
    public string User2 { get; set; }  // this could be made to a list to allow multiples

    public int numberOfMessages { get; set; }
    public virtual ICollection<PrivateMessageDetail> Messages { get; set; }
}
}

namespace DatabaseDesign.Models
{
public class PrivateMessageDetail
{
    public int PrivateMessageDetailId { get; set; }
    public DateTime MessageDate { get; set; }
    public string FromUser { get; set; } // Don't need ToUser, it's already in header
    public string Message { get; set; }

    public int PrivateMessageHeaderId { get; set; }
    public virtual PrivateMessageHeader PrivateMessageHeader { get; set; }
}
}

namespace DatabaseDesign.DAL
{
public class PrivateMessageContext : DbContext
{
    public PrivateMessageContext()
        : base("PrivateMessageContext")
    {

    }
    public DbSet<PrivateMessageHeader> PrivateMessageHeader { get; set; }
    public DbSet<PrivateMessageDetail> PrivateMessageDetail { get; set; }     
}
}
namespace DatabaseDesign.DAL
{
公共类PrivateMessageInitializer:System.Data.Entity.DropCreateDatabaseAlways//DropCreateDatabaseIfModelChanges
{
受保护的覆盖无效种子(PrivateMessageContext上下文)
{
var PrivateMessageHistory=新的PrivateMessageHeader();
var msgItems=newprivatemessagedetail{FromUser=“mike”,MessageDate=DateTime。现在,Message=“Message 1”,PrivateMessageDetailId=1,PrivateMessageHeaderId=1};
var msgItems2=newprivatemessagedetail{FromUser=“mike”,MessageDate=DateTime。现在,Message=“Message 2”,PrivateMessageDetailId=2,PrivateMessageHeaderId=1};
var msgItems3=newprivatemessagedetail{FromUser=“mike”,MessageDate=DateTime。现在,Message=“Message 3”,PrivateMessageDetailId=3,PrivateMessageHeaderId=1};
var msgItems4=newprivatemessagedetail{FromUser=“mike”,MessageDate=DateTime。现在,Message=“Message 4”,PrivateMessageDetailId=4,PrivateMessageHeaderId=1};
var msgItems5=newprivatemessagedetail{FromUser=“mike”,MessageDate=DateTime。现在,Message=“Message 5”,PrivateMessageDetailId=5,PrivateMessageHeaderId=1};
PrivateMessageHistory.Messages.Add(msgItems);
PrivateMessageHistory.Messages.Add(msgItems2);
PrivateMessageHistory.Messages.Add(msgItems3);
PrivateMessageHistory.Messages.Add(msgItems4);
PrivateMessageHistory.Messages.Add(msgItems5);
context.PrivateMessageHeader.Add(PrivateMessageHistory);
SaveChanges();
}
}
}
公共类PrivateMessageContext:DbContext
{
public PrivateMessageContext()
:base(“PrivateMessageContext”)
{
}
public DbSet PrivateMessageHeader{get;set;}
public DbSet PrivateMessageDetail{get;set;}
}
命名空间DatabaseDesign.Models
{
公共类PrivateMessageHeader
{
public int PrivateMessageHeaderId{get;set;}
public PrivateMessageHeader(){this.Messages=new List();}
public DateTime时间戳{get;set;}//线程开始的日期
公共字符串User1{get;set;}
公共字符串User2{get;set;}//可以将其设置为允许倍数的列表
public int numberOfMessages{get;set;}
公共虚拟ICollection消息{get;set;}
}
}
命名空间DatabaseDesign.Models
{
公共类PrivateMessageDetail
{
public int PrivateMessageDetailId{get;set;}
public DateTime MessageDate{get;set;}
来自用户{get;set;}//的公共字符串不需要ToUser,它已经在标头中
公共字符串消息{get;set;}
public int PrivateMessageHeaderId{get;set;}
公共虚拟PrivateMessageHeader PrivateMessageHeader{get;set;}
}
}
命名空间DatabaseDesign.DAL
{
公共类PrivateMessageContext:DbContext
{
public PrivateMessageContext()
:base(“PrivateMessageContext”)
{
}
public DbSet PrivateMessageHeader{get;set;}
public DbSet PrivateMessageDetail{get;set;}
}
}
web.config:

 <connectionStrings>
<add name="PrivateMessageContext" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=PrivateMessageContext1;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
</connectionStrings>


您需要引用数据库才能进行任何更改。我假设这是在启动时,但实际上您必须调用控制器之类的东西来启动DB代码

public class PrivateMessageController : Controller
{
    private PrivateMessageContext db = new PrivateMessageContext();

    // GET: /PrivateMessage/
    public ActionResult Index()
    {
        var privatemessagedetail = db.PrivateMessageDetail.FirstOrDefault < PrivateMessageDetail>();
        return View();
    }
}
公共类PrivateMessageController:控制器
{
private PrivateMessageContext db=new PrivateMessageContext();
//获取:/PrivateMessage/
公共行动结果索引()
{
var privatemessagedetail=db.privatemessagedetail.FirstOrDefault();
返回视图();
}
}

您的DbContext应该如下所示

public class PrivateMessageContext : DbContext
{
    public PrivateMessageContext()
        : base("PrivateMessageContext")
    {
       Database.SetInitializer( new PrivateMessageInitializer<PrivateMessageContext>());

    }
    public DbSet<PrivateMessageHeader> PrivateMessageHeader { get; set; }
    public DbSet<PrivateMessageDetail> PrivateMessageDetail { get; set; }


}
public类PrivateMessageContext:DbContext
{
public PrivateMessageContext()
:base(“PrivateMessageContext”)
{
SetInitializer(新的PrivateMessageInitializer());
}
public DbSet PrivateMessageHeader{get;set;}
public DbSet PrivateMessageDetail{get;set;}
}

这与EF设置无关;更重要的是要显示您正在运行的导致问题的实际代码。。。这些问题要么是EF上下文缓存了对象,需要用Refresh()方法刷新,要么是因为没有调用SaveChanges()而导致对象没有正确更新,或者诸如此类。您基本上已经拥有了它。我并不是真的打电话给控制器来做任何db更改:D傻瓜啊,好吧,关于我的下一个问题……注意*我称自己为傻瓜!:)
public class PrivateMessageContext : DbContext
{
    public PrivateMessageContext()
        : base("PrivateMessageContext")
    {
       Database.SetInitializer( new PrivateMessageInitializer<PrivateMessageContext>());

    }
    public DbSet<PrivateMessageHeader> PrivateMessageHeader { get; set; }
    public DbSet<PrivateMessageDetail> PrivateMessageDetail { get; set; }


}