我正在尝试使用LINQ-to-SQL将我的应用程序连接到SQLite数据库,到目前为止一切都运行良好。唯一的问题是,我使用的SQLite提供程序不支持代码生成(除非我做错了什么),因此我手动编码了数据库中的4个表格。
解决方案可以正确构建,但无法运行,给我错误消息:
“在类型 'Item' 上找不到关键成员 'ItemType_Id' 的关键字 'ItemType_Id'。关键字可能错误,或者 'Item' 上的字段或属性已更改名称。”
我已经检查和反复检查了数据库和属性映射中的拼写和字段名称,但没有发现任何问题。
表格的SQL如下:
我的映射代码如下:
解决方案可以正确构建,但无法运行,给我错误消息:
“在类型 'Item' 上找不到关键成员 'ItemType_Id' 的关键字 'ItemType_Id'。关键字可能错误,或者 'Item' 上的字段或属性已更改名称。”
我已经检查和反复检查了数据库和属性映射中的拼写和字段名称,但没有发现任何问题。
表格的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无法看到我的关联?
ThisKey
和OtherKey
应该包含在您的类中使用的名称,而不是数据库。 - Anthony Serdyukov