我正在尝试使用LINQ-to-SQL将我的应用程序连接到SQLite数据库,到目前为止一切都运行良好。唯一的问题是我使用的SQLite提供程序不支持代码生成(除非我做错了),所以我手动编写了DB中的4个表。
解决方案构建正确,但不会运行,给我错误消息
无法在“项目”类型上找到键'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不能看到我的关联?
答案 0 :(得分:4)
尝试使用
ThisKey = "ItemTypeId"
答案 1 :(得分:3)
我也有这个问题,我的解决方案是我不小心创建了一个与我的数据库中的一个表名相同的页面。重命名了Page,它立刻就可以了。