Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.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# Linq不使用InsertOnSubmit()向表中添加数据(&;提交更改()_C#_Sql Server_Linq_Linq To Sql - Fatal编程技术网

C# Linq不使用InsertOnSubmit()向表中添加数据(&;提交更改()

C# Linq不使用InsertOnSubmit()向表中添加数据(&;提交更改(),c#,sql-server,linq,linq-to-sql,C#,Sql Server,Linq,Linq To Sql,我正在使用LINQ将数据插入数据库。问题是执行代码后,数据没有添加到表中 以下是我的工作: 执行代码→ 转到服务器资源管理器中的“数据连接”→ 刷新表格 但表中没有显示任何行 下面是我的代码。任何帮助都将不胜感激。谢谢 private static LinqToSqlDataContext dbContext; static Tables() //constructor { string connectionString = ConfigurationM

我正在使用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.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
}
重要提示


不要为DbContext类创建静态变量。实体框架在它自己的内部静态对象中保持缓存,如果您试图将DbContext作为静态对象持久化,那么在几次更新之后就会发生奇怪的事情。总是新的背景。第一次连接后速度非常快,代码更清晰。

此表是否有
主键
?是。曲目Id为PK。保存时是否出现异常?你确定你正在查看用于代码的同一个数据库吗?嗯。上下文不包含add方法。。。表不包含Add的定义。虽然我100%同意不将其保持为静态,但是什么让您认为这是EF
InsertOnSubmit
System.Data.Linq.Table
类的一种方法,它使这个Linq2SQL成为一个SQL。(编辑:)然后还有LinqToSqlDataContext,它也是一个提示:我现在看到了:)今天早上我的咖啡里有脏东西!
public class MusicDbContext : DbContext // inherit from Entity Framework
{
    public DbSet<Track> Tracks{get;set;} // This maps to the database
}
...
var myContext = new MusicDbContext();
myContext.Tracks.Add(theNewTrack);
myContext.SaveChanges();
...