Linq没有使用InsertOnSubmit()&添加数据到表。的SubmitChanges()

时间:2016-03-02 04:17:30

标签: c# sql-server linq linq-to-sql

我正在使用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;
    }

2 个答案:

答案 0 :(得分:0)

更改

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

然后

 dbContext.SaveChanges();

答案 1 :(得分:0)

如果你有这门课程:

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
}

这真的是你所需要的。如果您的数据库表名为&#34; Tracks&#34;然后映射将发生&#34;刚刚发生&#34;你现在有一组曲目可以用来更新和添加,删除(CRUD),如下所示:

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

重要提示

不要创建DbContext类的静态变量。实体框架将缓存保存在自己的内部静态对象中,如果您尝试将DbContext保持为静态,那么在经过一些更新后,奇怪的事情就会开始发生。始终是新的背景。在第一次初始连接后它真的很快,并且为您提供更清晰的代码。