我正在尝试学习LINQ to SQL,并且能够查询数据库并返回IQueryable并操纵从中检索的对象。但是我不知道如何将新对象添加回数据库或原始IQueryable。

private DataContext db;
private IQueryable<ActionType> action;

public void BuildQuery(string connection) {
    db = new DataContext(connection);
    action = db.GetTable<ActionType>().Select(a=>a);

    ActionType at = new ActionType();
    at.Name = "New Action Type";

    // What now? action.add(at) || db.GetTable<ActionType>.add(at); ??
}


如果您不知道正确的术语,这是一件很难的事情。而且我找不到任何可以完全满足我的要求的示例。

那么,如何将新对象添加到查询/数据库中呢?

最佳答案

要插入新创建的“ ActionType”实例,您需要将对象添加到数据上下文中(并且在Linq-to-SQL beta中将“ add”重命名为“ InsertOnSubmit”),然后在数据上下文中调用SubmitChanges:

public void BuildQuery(string connection) {
    db = new DataContext(connection);
    action = db.GetTable<ActionType>().Select(a=>a);

    ActionType at = new ActionType();
    at.Name = "New Action Type";

    // What now? action.add(at) || db.GetTable<ActionType>.add(at); ??
    db.ActionTypes.InsertOnSubmit(at);
    db.SubmitChanges();
}


请参见this blog post here为什么要在InsertOnSubmit上使用Attach

10-06 00:35