基本上我有一个像这样的实体:
public class Person {
public int PersonId { get; set; }
public string Name { get; set; }
public Address Hometown { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
还有一个类:
public class Address {
public City City { get; set; }
public string Province { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想要完成的是垂直连接两个类并有一个表行:
TB_PERSON:
PersonId PK
Name
City_id FK
Province
Run Code Online (Sandbox Code Playgroud)
为什么我想要这种方法,在我的实际项目中,我在多个条目上发生了相同类型的数据结构模式,在这种情况下,示例将是地址类.它可能很容易出现在另一个实体中.
难道我几天都找不到怎么做这么难吗?我能得到的是最复杂的类型,但在这种情况下它们不允许导航属性.我希望访问并使我的行数据类型化,面向对象,以为EF会有所作为.任何帮助表示赞赏.
private struct Maybe<T>
{
private readonly T value;
private readonly bool hasValue;
private Maybe(T value)
{
this.value = value;
hasValue = true;
}
public static implicit operator Maybe<T>(T value) =>
value == null ? new Maybe<T>() : new Maybe<T>(value);
}
private static Maybe<byte> OK()
{
return 5;
}
private static Maybe<IEnumerable<byte>> NotOK()
{
var e = new[] { 1, 2, 3 }.Select(x => (byte)x);
Console.WriteLine(e.GetType().Name);
return e;
}
Run Code Online (Sandbox Code Playgroud)
小提琴(不要使用):https : //dotnetfiddle.net/NxAw9l
更新小提琴:https : //dotnetfiddle.net/NrARTl
在上面的代码中,某些泛型类型无法进行隐式转换。请参阅Ok()
和NotOk() …