我想在EF中支持此类sql:
create table prepare(
id int not null auto_increment,
target_id int not null,
key_user_id int not null,
key_date date not null,
primary key(id)
);
CREATE UNIQUE INDEX ak__prepare
ON prepare (
target_id,
key_user_id,
key_date
);
我的模特:
public sealed class Prepare
{
public int Id { get; set; }
// Uniq
public int TargetId { get; set; }
public Key Key { get; set; }
// End uniq
}
public class Key {
public int UserId {get;set;}
public DateTime Date {get;set;}
}
按我的方式配置时
modelBuilder.Entity<Prepare>()
.OwnsOne(z => z.Key)
.HasAlternateKey(c => new { c.TargetId, c.Key.UserId, c.Key.Date });
EF说
属性表达式'c => new <> f__AnonymousType32`4(TargetId = c.TargetId,UserId = c.Key.UserId,Date = c.Key.Date)'无效。该表达式应表示一个简单的属性访问:“ t => t.MyProperty”。指定多个属性时,请使用匿名类型:'t => new {t.MyProperty1,t.MyProperty2}'。
按我的方式配置时
modelBuilder.Entity<Prepare>()
.OwnsOne(z => z.Key)
.HasAlternateKey(c => new { c.TargetId, c.Key });
EF说
“键”不能用作实体类型“准备”的属性,因为它已配置为导航。”
那么唯一的方法-忘记拥有的类型了吗?