SQLite.Net-PCL 不支持复合 PK是一个已知问题,如果我不想退回到类似的构造,那么在我的情况下我需要这个功能
create table something(value varchar primary key not null);
insert into something(value) values("$Value1,$Value2");
Run Code Online (Sandbox Code Playgroud)
手动(不使用 ORM)创建具有复合主键的表也不起作用,抛出相同的SQLiteException,告诉我我的表有多个主键。
桌子的布局是这样的
class ChannelBinding {
[PrimaryKey]
public int Id { get; set; }
[PrimaryKey]
public string ChannelId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有任何已知的解决方法能够模拟复合 PK 的行为。
从对结构的引用中获取对结构域的引用的所有方法让我不知所措。这些是我现在知道的方式:
struct Foo {
bar: i32,
}
let foo = &Foo { bar: 123 };
let bar1 = &foo.bar;
let ref bar2 = foo.bar;
let ref bar3 = (*foo).bar;
let &Foo { bar: ref bar4 } = foo;
let Foo { bar: bar5 } = foo;
let Foo { bar: ref bar6 } = foo;
let Foo { bar: ref bar7 } = *foo;
Run Code Online (Sandbox Code Playgroud)
其中哪一种是“首选方式”?我假设像foo.bar单个字段和模式匹配这样的字段访问是首选,以便一次性获得多个字段,但是我不清楚我上面列出的多种方式中的每种情况下应该使用哪种方式。