EasyFrameWork之ORM详解

ORM

ORM对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。

EasyFrameWork,ORM配置

例,有Example这个实体:

[DataConfigure(typeof(ExampleMetaData))]
public class Example : EditorEntity
{

public int Id { get; set; }
public string Text { get; set; }
public string Value { get; set; }

}

class ExampleMetaData : DataViewMetaData<Example>
{

protected override void DataConfigure()
{

DataTable(“Example”);
DataConfig(m => m.Id).AsIncreasePrimaryKey();
DataConfig(m => m.Value).Mapper(“ValueText”);
DataConfig(m => m.Title).Ignore();

}

protected override void ViewConfigure()
{

ViewConfig(m => m.Id).AsHidden();
ViewConfig(m => m.Text).AsTextBox().Required();
ViewConfig(m => m.Value).AsMutiLineTextBox().MaxLength(200);

}

}

[DataConfigure(typeof(ExampleMetaData))]

这是把ExampleMetaData这个元数据注入到Example这个实体的特性中。

DataConfigure()

这个方法是做数据库的相关配置,所以,所有相关数据库的配置,都写在此处。

DataTable(“Example”); 设置数据库中对应的表为名为”Example”。若实体名称于表名一致,也可用 TargetType.Name。

DataConfig(m => m.Id).AsIncreasePrimaryKey(); 这是把Id这个字段,做为自增主键。

DataConfig(m => m.p).AsPrimaryKey() 设为主键。

DataConfig(m => m.Value).Mapper(“ValueText”);  映射关系,如果字段名称和数据库列名不一致,则需要做这个映射关联。

DataConfig(m => m.Title).Ignore();  若数据库表的列中,没有这个字段,则需要做忽略处理。

DataConfig(m => m.Title).Insert(true/false); 在做Add,添加数据的时候,是否会把该值写入到数据库。默认true

DataConfig(m => m.Title).Update(true/false); 在更新数据时,该字段的值是否会被更新。默认true

ViewConfigure()

这个方法是做相关的显示配置,所以,所有字段的显示方式,都在此处进行配置。

ViewConfig(m => m.Id).AsHidden() 做为隐藏域,在列表和详细页面,都不显示。

ViewConfig(m => m.Text).AsTextBox() 单行文本输入框。

ViewConfig(m => m.Value).AsMutiLineTextBox() 多行文本输入框。

ViewConfig(m => m.Value).AsCheckBox() 复选框

ViewConfig(m => m.Value).AsCollectionArea() 若该字段是 IEnumerable<T>  类型,则使用这个设置。并且,请对 T 也做相关的ORM设置。

ViewConfig(m => m.Value).AsDropDownList() 下拉框

ViewConfig(m => m.Value).AsFileUp() 上传控件

ViewConfig(m => m.Value).AsMutiSelect() 多选框

ViewConfig(m => m.Value).AsPassWord() 密码输入框

Validate 数据验证。

ViewConfig(m => m.Value).AsTextBox().

  • Required()
  • MaxLength(n)
  • Range(m,n)
  • RegularExpression(Easy.Constant.RegularExpression.Integer)
  • Email()

其它

ViewConfig(m => m.Value).AsTextBox().SetDisplayName(“”) 设置显示名称

ViewConfig(m => m.Value).AsTextBox().Order() 显示排序

ViewConfig(m => m.Value).AsTextBox().AddClass() 添加样式 (html)

ViewConfig(m => m.Value).AsTextBox().AddProperty() 添加属性和值 (html)

ViewConfig(m => m.Value).AsTextBox().AddStyle() 添加样式 (html)

ViewConfig(m => m.Value).AsTextBox().Disable()  html disabled

ViewConfig(m => m.Value).AsTextBox().Format() 格式化

ViewConfig(m => m.Value).AsTextBox().FormatAsDate()  只显示日期,格式为:年/月/日

ViewConfig(m => m.Value).AsTextBox().FormatAsDateTime() 显示日期和时间,格式为:年/月/日 时:分

ViewConfig(m => m.Value).AsTextBox().FormatDate() 自定义格式化日期类型

ViewConfig(m => m.Value).AsTextBox().Hide() 在编辑页面不显示。

ViewConfig(m => m.Value).AsTextBox().HideInGrid() 在列表页面不显示

ViewConfig(m => m.Value).AsTextBox().Ignore() 不会出现在页面中,隐藏域中也没有。

ViewConfig(m => m.Value).AsTextBox().PlaceHolder() 显示提示。

ViewConfig(m => m.Value).AsTextBox().ReadOnly() html readonly

ViewConfig(m => m.Value).AsTextBox().SearchAble()  在列表页面,是否提供查询

ViewConfig(m => m.Value).AsTextBox().SetColumnWidth()  在列表页面,列宽

ViewConfig(m => m.Value).AsTextBox().SetTemplate() 设置显示模版。

ViewConfig(m => m.Value).AsTextBox().ShowForDisplay() 是否在查看页面显示

ViewConfig(m => m.Value).AsTextBox().ShowForEdit() 是否在编辑页面显示

Service

public interface IExampleService : IService<Example>
{
}

public class ExampleService : ServiceBase<Example>, IExampleService
{

private readonly IExampleRepository _exampleRepository;

public ExampleService(IExampleRepository exampleRepository)
{

_exampleRepository = exampleRepository;

}

}

DATA  / Repository

 public interface IExampleRepository : IRepository<Example>
{
}

public class ExampleRepository : RepositoryBase<Example>, IExampleRepository
{
}