标签: submitchanges

LINQ没有更新.SubmitChanges()

有什么理由这样的东西不起作用吗?

这是我多次用LINQ更新表中记录的逻辑:

 DataClasses1DataContext db = new DataClasses1DataContext();
 User updateUser = db.Users.Single(e => e.user == user);
 updateUser.InUse = !updateUser.InUse;
 db.Log = new System.IO.StreamWriter(@"c:\temp\linq.log") { AutoFlush = true };
 db.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

(updateUser.InUse是一个位字段)

由于某种原因,它无法正常工作.当我检查linq.log时,它是完全空白的.

我的.dbml可能有问题吗?其他表似乎工作正常,但我比较.dbml中的属性,它们都匹配.

好像是db.SubmitChanges(); 没有检测到任何需要的更新.

linq submitchanges linq-to-sql

22
推荐指数
1
解决办法
2万
查看次数

在简单语句中未找到或更改LINQ C#错误的行

首先,这不是一个多用户问题,因为我在本地数据库的开发版本上工作.

Row not found or changed当我执行db.SubmitChanges()时,我得到了不太明确的错误.如果我在SubmitChanges()发生之前中断执行,我可以检入SQL Server Management Studio并且该行确实存在!

这是整个函数的代码,只是为了让任何想要帮助的人在上下文中,但问题行最后是正确的(第48行).

更新这是一个非常奇怪的错误:错误是由更新matchingTrans.Url引起的(请参阅倒数第二行代码).注释掉这一行并不会引发错误 - 即使匹配的Trans.Title仍然得到更新.

private static void MenuItemUpdate(int languageId, NavigationItem item)
{
    using (var db = DataContextFactory.Create<MyDataContext>())
    {
        // Select existing menu item from database.
        var dbItem =
            (from i in db.MenuItems
             where i.Id == item.Id
             select i).Single();
        // Obtain ID of link type.
        dbItem.FkLinkTypeId = GetLinkTypeByName(
            Enum.GetName(typeof (NavigationItemLinkType), item.LinkType)).Id;
        // Update the Link field with what is given.
        dbItem.Link = item.Link;
        db.SubmitChanges();

        // Item already exists …
Run Code Online (Sandbox Code Playgroud)

c# linq submitchanges linq-to-sql

19
推荐指数
1
解决办法
2万
查看次数

DataContext的例外情况

我一直在互联网上搜索,但我似乎无法找到它.DataContext可以抛出什么异常?或者更具体地说,DataContext.SubmitChanges()方法抛出了什么异常?

编辑
作为参考,这里列出了可能由L2S DataContext引发的已知异常:

  • SQLEXCEPTION
  • ChangeConflictException
  • DuplicateKeyException
  • ForeignKeyReferenceAlreadyHasValueException
  • OutOfMemoryException(当没有正确处理DataContext时)

c# datacontext exception-handling submitchanges linq-to-sql

16
推荐指数
1
解决办法
4686
查看次数

如何从LINQ DataContext.SubmitChanges()获取TSQL查询

我正在使用Linq to SQL.我有一个DataContext,我就是.SubmitChanges()'.插入标识字段时出错,我希望看到它用于插入此标识字段的查询.

我在快速监视器中看不到查询本身; 我在哪里可以从调试器中找到它?

c# linq datacontext submitchanges linq-to-sql

15
推荐指数
3
解决办法
2万
查看次数

SQL Server上的NText,Text和Image的LINQ问题

事先道歉,因为这不是一个问题,而是一个解决方案 - 但是需要大量的搜索才能找到答案并且谷歌没有多大帮助,所以我想通过提供错误来回馈社区.帮助未来googlers的解决方案.

使用LINQ to SQL时,我在向数据表提交更改(第二次)时遇到了问题.我第一次提交更改都没关系,第二次提交更改我收到了一个SQL异常,其中说:

"The text, ntext, and image data types cannot be compared or sorted, 
 except when using IS NULL or LIKE operator"
Run Code Online (Sandbox Code Playgroud)

当我调用SubmitChanges()时抛出了异常,但由于LINQ的延迟加载,当我调用Refresh(RefreshMode.KeepCurrentValues,myObject)时它实际上出现在上一行中.

exception ntext submitchanges linq-to-sql

9
推荐指数
1
解决办法
3406
查看次数

使用LINQ-to-SQL模仿SQL插入触发器

使用LINQ-to-SQL,我想在插入父实体时自动创建子记录.基本上,模仿SQL Insert触发器的工作方式,但是在代码中,以便可以进行一些额外的处理.

父亲与孩子有关联,但似乎我不能简单地在DataContext期间添加新的子记录SubmitChanges().

例如,

public partial class Parent 
{
    partial void OnValidate(System.Data.Linq.ChangeAction action)
    {
        if(action == System.Data.Linq.ChangeAction.Insert)
        {
            Child c = new Child();
            ... set properties ...
            this.Childs.Add(c);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这将是理想的,但遗憾的是新创建的Child记录未插入数据库.有道理,因为DataContext有一个对象/语句列表,可能不喜欢在它的中间添加新项目.

类似地,拦截partial void InsertParent(Parent instance)DataContext中的函数并尝试添加Child记录会产生相同的结果 - 没有错误,但没有添加到数据库中.

有没有办法在不向表示层添加代码的情况下获得此类行为?

更新: 无论是OnValidate()InsertParent()功能从DataContext的就是所谓的SubmitChanges()功能.我怀疑这是我正在尝试做的事情的固有困难 - 在将InsertOnSubmit()现有更改提交到数据库的过程中,DataContext将不允许插入其他对象(例如,通过).

理想情况下,我希望将所有内容保留在一个Transaction下,以便在插入/更新期间发生任何错误时,数据库中实际上没有任何更改.因此,我尝试模仿SQL触发器功能,允许通过对DataContext SubmitChanges()函数的单次调用自动插入子记录.

linq datacontext triggers submitchanges linq-to-sql

6
推荐指数
1
解决办法
3721
查看次数

ASP.NET表单 - 表单名称\ id更改为aspnetForm

我有这个代码:

<form Name="AddPlace" ID="AddPlace" action="AddPlace.aspx" class="niceform" method="post" runat="server">
Run Code Online (Sandbox Code Playgroud)

当我尝试执行代码时,我得到了这个:

<form name="aspnetForm" method="post" action="AddPlace.aspx" id="aspnetForm" class="niceform">
Run Code Online (Sandbox Code Playgroud)

怎么变了?

forms asp.net submitchanges

6
推荐指数
2
解决办法
7895
查看次数

WP8和Linq to SQL与一对多关系:SubmitChanges()删除错误的实体

我有以下entites /表:

  • Board:一块板可以有很多引脚
  • Pin:一个引脚分配给一个板.该实体是抽象的,并且具有具有不同实现的子项.所有属于父pin实体的子节点InheritanceMapping将被保存到pin表中并用a区分Discriminator column
    • TaskPin:这是pin的一个子实现.它可以有很多任务.
  • Task:一个任务分配给一个TaskPin

以下是一些使我的结构更清晰的代码:

[Table]
public class Board : ModelBase
{
    private int _boardId;

    [Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity"
                         ,CanBeNull = false, AutoSync = AutoSync.OnInsert)]
    public int BoardId
    {
        get { return _boardId; }
        set { SetProperty(ref _boardId, value); }
    }

    private EntitySet<Pin> _pins;

    [Association(Storage = "_pins", OtherKey = "_boardId"
    ,ThisKey = "BoardId", DeleteRule = "CASCADE")]
    public EntitySet<Pin> Pins
    {
        get { …
Run Code Online (Sandbox Code Playgroud)

c# submitchanges linq-to-sql windows-phone windows-phone-8

6
推荐指数
1
解决办法
311
查看次数

SubmitChanges在内部添加所有字段作为where子句,如何摆脱它

我在数据库中有一个表,主键说emp_pk.现在使用LINQ我正在尝试对它执行一些操作.当我改变几个属性并打电话时,

context.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

理想情况下,where子句应该包含where emp_pk = value.

但是当我从SQL分析器查看查询时,我在where子句中看到很多条件,我相信它是由LINQ引擎生成的.这导致了一个重大的性能问题.

在这种情况下,有谁可以帮助我优化查询?

c# linq submitchanges where-clause linq-to-sql

4
推荐指数
1
解决办法
617
查看次数

什么可能导致db.SubmitChanges()无法在linq-to-sql中工作?

我在WPF中用LINQ-TO-SQL建立了一个非常简单的例子.

我可以像这样得到一个对象(pageItem),我可以更改属性,当我调用SubmitChanges()时,它没有给我任何错误,但它没有保存更改.

MainDataContext db = new MainDataContext();
var pageItem = (from p in db.PageItems
              where p.Id == 1
              select p).SingleOrDefault();

pageItem.Title = "changed";
db.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

什么可能导致SubmitChanges不提交更改?

更多信息:

这也不起作用,即使db.ExecuteCommand不起作用,奇怪的是当调试F11没有进入SubmitChanges()或ExecuteCommand()时,为什么我不能介入呢?

using (var db = new MainDataContext())
{
    var pageItem = (from p in db.PageItems
                    where p.Id == 1
                    select p).SingleOrDefault();

    pageItem.Title = "changed";
    db.SubmitChanges();

    db.ExecuteCommand("INSERT INTO PageItems (Title) VALUES ('this is the title')");


    if (pageItem != null)
        MainContent.Children.Add(new QuickForm(pageItem));

}
Run Code Online (Sandbox Code Playgroud)

更多信息: …

wpf submitchanges linq-to-sql

3
推荐指数
1
解决办法
6761
查看次数