【问题标题】:Could not find key member 'x' of key 'x' on type 'y'在类型“y”上找不到键“x”的关键成员“x”
【发布时间】:2011-02-26 15:11:37
【问题描述】:

我正在尝试使用 LINQ-to-SQL 将我的应用程序连接到 SQLite 数据库,到目前为止一切正常。唯一的问题是我使用的 SQLite 提供程序不支持代码生成(除非我做错了什么),所以我手动编写了数据库中的 4 个表。

解决方案正确构建,但无法运行,给我错误消息

在类型“Item”上找不到键“ItemType_Id”的键成员“ItemType_Id”。
键可能是错误的,或者“项目”上的字段或属性已更改名称。

我已经检查并再次检查了数据库和属性映射中的拼写和字段名称,但没有发现任何问题。

表的 SQL 如下所示:

CREATE TABLE [Items] (
    [Id] integer PRIMARY KEY AUTOINCREMENT NOT NULL,
    [Name] text NOT NULL,
    [ItemType_Id] integer NOT NULL
);

还有我的映射代码:

[Table(Name="Items")]
class Item {

    // [snip]

    [Column(Name = "Id", IsPrimaryKey=true, IsDbGenerated=true)]
    public int Id {
        get;
        set;
    }

    // [snip]

    [Column(Name="ItemType_Id")]
    public int ItemTypeId {
        get;
        set;
    }

    [Association(Storage = "_itemType", ThisKey = "ItemType_Id")]
    public ItemType ItemType {
        get {
            return _itemType.Entity;
        }
        set {
            _itemType.Entity = value;
        }
    }
    private EntityRef<ItemType> _itemType;

    // [snip]
}

这真的是我第一次探索 LINQ-to-SQL,我边走边学,但我似乎无法解决这个看似简单的问题。

为什么 LINQ 看不到我的关联?

【问题讨论】:

    标签: c# linq-to-sql .net-3.5


    【解决方案1】:

    尝试使用<pre>ThisKey = "ItemTypeId"</pre>

    【讨论】:

    • 确实,ThisKeyOtherKey 应该包含您的类中使用的名称,而不是数据库。
    【解决方案2】:

    我也遇到了这个问题,我的解决方案是我不小心创建了一个与我在数据库中的一个表同名的页面。重命名页面并立即生效。

    【讨论】:

      猜你喜欢
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 2022-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多