【问题标题】:Compiler confusing assignment and comparison编译器混淆赋值和比较
【发布时间】:2012-08-18 12:50:15
【问题描述】:

我有一个对象,它是 LINQ CP_Stop 中的一个实体,我正在尝试用不同的数据填充属性。

Dim stop As New CP_Stop
With stop 
    .fdStart = dtpStart.Value
    .fdEnd = dtpEnd.Value
    .CP_Cause = cause
    .User = user
    .Machine = machine
    .CP_Production = _presenter.GetProduction()
End With

前两个赋值已经完成,第三个赋值,CP_Cause 是我之前在方法中查询的对象,但是当涉及到第四个时,它崩溃了。 错误如下:

没有为类型“Entities.Users”和“Entities.Users”定义运算符“=”。

有趣的部分是,如果切换例如原因和用户分配,则第一个切换成功,另一个崩溃。与所有其他对象分配相同的场景。在我看来,编译器混淆了赋值。

我尝试了几种方法来进行分配,比如在另一种方法上进行,但它总是在第一个方法之后崩溃。

【问题讨论】:

  • 您称其为“崩溃”并说这是运行时错误,但该错误在运行时有点不寻常。你确定这不是编译时错误吗?
  • 你有Option Explicit OnOption Strict On吗?
  • 我有两个选项,你是正确的 minitech 我的意思是当我调试时它会显示 VS 上的错误
  • 您是在此处使用实体框架,还是使用 LINQ to SQL?

标签: .net vb.net linq operators


【解决方案1】:

我不确定您是否可以拥有一个包含对另一个表的另一行的引用的列属性,因为它将如何在 sql 中翻译?您必须为此使用密钥(expl:userId 而不是 user)。
你可能想看看 EntityRef 和 EntitySet 来处理一对一/一对多的关系,但这是复杂的东西。

【讨论】:

  • 如果这个Entity Framework,以及两个表之间的关系是在模型中定义的,那么OP的例子是完全合法的。
  • 是的,这是合法的,我发布的错误是调试器所说的,在 try catch 块上,异常是不同的上下文对象。谢谢大家
猜你喜欢
  • 1970-01-01
  • 2014-06-03
  • 2016-02-22
  • 2012-02-18
  • 1970-01-01
  • 2014-12-08
  • 2016-03-05
  • 1970-01-01
  • 2017-12-07
相关资源
最近更新 更多