簡體   English   中英

Linq不使用InsertOnSubmit()和SubmitChanges()向表添加數據

[英]Linq not adding data to table, using InsertOnSubmit() & SubmitChanges()

我正在使用LINQ將數據插入數據庫。 問題是執行代碼后,數據沒有添加到表中。

這是我的工作:執行代碼→轉到服務器資源管理器中的“數據連接”→刷新表。

但是表中沒有顯示行。

下面是我的代碼。 任何幫助將非常感激。 謝謝。

    private static LinqToSqlDataContext dbContext;

    static Tables() //constructor
    {
        string connectionString = ConfigurationManager.ConnectionStrings["MusicPlayerDBConnectionString"].ConnectionString;
        dbContext = new LinqToSqlDataContext(connectionString);
    }

    public static void AddTrack(Track track) // Track is custom data structure
    {
        Track_Table trackTable = CreateTrack(track);
        dbContext.Track_Tables.InsertOnSubmit(trackTable);
        dbContext.SubmitChanges();
    }

    private static Track_Table CreateTrack(Track track)
    {
        Track_Table trackTable = new Track_Table
        {
            Track_Id = track.Id,
            Title = track.Title,
            Album_Id = null,
            Artist = track.Artist,
            Duration = track.Duration,
            Path = track.Path,
            Image_Path = track.imagePath
        };
        return trackTable;
    }

更改

 dbContext.Track_Tables.InsertOnSubmit(trackTable); to
 dbContext.Track_Tables.Add(trackTable);

接着

 dbContext.SaveChanges();

如果您有此類:

public class Track
{
    public int Id {get; set;}
    public int Number {get; set;}
    public string Title{get; set;}
    // etc
}

然后,您的DbContext應該看起來像這樣:

public class MusicDbContext : DbContext // inherit from Entity Framework
{
    public DbSet<Track> Tracks{get;set;} // This maps to the database
}

這實際上就是您所需要的。 如果您的數據庫表被命名為“ Tracks”,則映射將“發生”,並且您現在擁有了一系列的軌跡,可用來像這樣來更新,添加,刪除(CRUD):

...
var myContext = new MusicDbContext();
myContext.Tracks.Add(theNewTrack);
myContext.SaveChanges();
...

重要的提示

不要為您的DbContext類創建靜態變量。 實體框架將緩存保留在其自己的內部靜態對象中,如果您嘗試將DbContext持久化為靜態對象,則在進行幾次更新后,奇怪的事情就會開始發生。 總是更新上下文。 首次初始連接后,它確實非常快,並且可以為您提供整潔的代碼。

暫無
暫無

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

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