Mego框架使用一组约定来基于CLR类来构建模型。您可以指定其他配置来补充和/或覆盖通过约定发现的内容。
这里需要强调的我们EF不同的是框架只支持数据注释的语法来构建模型,后期只有通过其他接口才能更改模型定义。
框架中所的数据注释都在 Caredev.Mego.DataAnnotations 命名空间下。
public class Blog { [Key] public int BlogId { get; set; } public string Url { get; set; } }
主键约定
按照惯例,一个名为Id
或<type name>Id
将被配置为实体的键的属性。
class Car { public string Id { get; set; } public string Make { get; set; } public string Model { get; set; } }
class Car { public string CarId { get; set; } public string Make { get; set; } public string Model { get; set; } }
不过您也可以使用数据注释强制一个或多个属性为主键
class Car { [Key] public string LicensePlate { get; set; } public string Make { get; set; } public string Model { get; set; } }
复合主键示例
public class Warehouse { [Key, Column(nameof(Id), Order = )] public int Id { get; set; } [Key, Column(nameof(Number), Order = )] public int Number { get; set; } public string Name { get; set; } public string Address { get; set; } }
可为空属性
您可以使用数据注释来指示当前属性是否为空。
public class Blog { public int BlogId { get; set; } [Nullable(false)] public string Url { get; set; } }
并发令牌
与EF相同,本框架支持乐观并发
public class Person { public int PersonId { get; set; } [ConcurrencyCheck] public string LastName { get; set; } public string FirstName { get; set; } }
排除属性
你可以指定某个属性不参与ORM映射
public class Blog { public int BlogId { get; set; } public string Url { get; set; } [NotMapped] public DateTime LoadedFromDatabase { get; set; } }