簡體   English   中英

EntityFramework CodeFirst數據庫不會更新

[英]EntityFramework CodeFirst Database doesn't update

一天前,我開始在簡單的Windows窗體項目(C#)中使用Entity Framework CodeFirst。 我創建了兩個模型:

[Table("SavesSet")]
public partial class Saves
{
    public Saves()
    {
        this.SkillsSet = new HashSet<Skills>();
    }

    [Key]
    public int SaveID { get; set; }

    public string Player { get; set; }
    public int Age { get; set; }
    public int Money { get; set; }

    public virtual ICollection<Skills> SkillsSet { get; set; }
}

[Table("SkillsSet")]
public partial class Skills
{
    [Key]
    public int SkillID { get; set; }

    public string Name { get; set; }
    public int Value { get; set; }
    public int SavesSaveID { get; set; }

    public virtual Saves SavesSet { get; set; }
}

然后我使用Visual Studio Database Explorer(使用SqlServerCe 3.5的本地數據庫)在我的數據庫中添加了一行:

SaveID = 1

Player =“TEST”

年齡= 1

錢= 1

我還用ListView創建了表單並編寫了一些代碼:

private SavesContext db = new SavesContext();
foreach (Saves s in db.SavesSet.ToList())
{
    ListViewItem l = new ListViewItem();
    l.Name = s.SaveID.ToString();
    l.Text = s.Player;
    ListViewSaves.Items.Add(l);
}

但是當我啟動程序調試時,ListView是空的。 我設置斷點,查看局部變量並看到SavesSet計數為0。

我通過代碼添加了一行:

Saves s = new Saves();
s.Player = "TestName";
s.Age = 5110;
s.Money = 200;
db.SavesSet.Add(s);
db.SaveChanges();

並且ListView顯示了這一個。 但在我的數據庫中沒有任何東西(它的大小沒有變化)。 我重新啟動Visual Studio - 我的麻煩仍然是實際的:ListView顯示項目,但數據庫是空的。 我在App.Config和VS Database Explorer中檢查了ConnectionString - 它們是相同的。

所以,我的問題是:我如何探索我的真實數據庫以及它存儲在哪里?

更新。

我的DbContext:

    public SavesContext()
        : base("Saves")
    {
    }

    public DbSet<Saves> SavesSet { get; set; }
    public DbSet<Skills> SkillsSet { get; set; }

我的App.Config:

<?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <configSections>
        </configSections>
        <connectionStrings>
            <add name="TextSim.Properties.Settings.Saves" connectionString="Data          
            Source=C:\Documents and Settings\My\My Documents\visual studio       
            2010\Projects\TextSim\TextSim\Saves.sdf"
            providerName="System.Data.SqlServerCe.3.5" />
        </connectionStrings>
     </configuration>

實體框架使用稱為約定優於配置的東西,這意味着如果您不為某些事物提供值,它將使用默認值。

如果未指定連接字符串,則它將使用從EF的命名空間和DbContext名稱派生的默認連接字符串。 如果是這種情況,那么它將使用默認系統創建一個新的(空白)數據庫,而不是使用您在Web.Config中配置的數據庫。

因此,當你保存東西時,它確實會保存到錯誤的數據庫中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM