EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

如何:为实体框架数据模型提供初始数据

引入数据模型后,可能需要让应用程序使用一组预定义的对象填充数据库。在本主题中,您将学习如何在应用程序运行时通过代码将数据添加到数据库中。为此,此处演示了使用关联的Task创建Employee对象的代码。

提示

DevExpress代码示例数据库(http://www.devexpress.com/example=E4375)中提供了完整的示例项目。

在此示例中,假定您已根据如何:在XAF中首先使用实体​​框架代码如何:在XAF指令中首先使用实体​​框架模型创建了带有实体框架数据模型的XAF解决方案。

实施模块更新程序

打开位于MySolution.Module项目的Database Update文件夹中的Updater.csUpdater.vb)文件,并重写ModuleUpdater.UpdateDatabaseAfterUpdateSchema方法,如下所示。

public class Updater : ModuleUpdater {
    public Updater(IObjectSpace objectSpace, Version currentDBVersion) : base(objectSpace, currentDBVersion) { }
    public override void UpdateDatabaseAfterUpdateSchema() {
        if (ObjectSpace.GetObjects<Employee>().Count == 0) {
            var employee = ObjectSpace.CreateObject<Employee>();
            employee.FirstName = "Mary";
            employee.LastName = "Tellitson";
            var task = ObjectSpace.CreateObject<Task>();
            task.Subject = "Check reports";
            task.AssignedTo = employee;
        }
        ObjectSpace.CommitChanges();
    }
}

在上面的代码中,如果数据库中没有Employee记录,则会创建一个带有关联Task的Employee对象。如您所见,XAF使用对象空间对象来操纵持久对象(请参阅创建,读取,更新和删除数据)。

注意

要了解有关更新应用程序数据库的更多信息,请参阅“创建和更新应用程序的数据库”主题。

添加ModuleInfo实体

XafApplication.CheckCompatibilityType属性设置为ModuleInfo时,将使用映射到ModuleInfo表的ModuleInfo实体存储应用程序模块的版本信息。当模块装配版本增加时,XAF会将实际模块版本与数据库中存储的版本进行比较。如果版本不同,则必须更新数据库。为了支持数据库更新,实现数据模型的实体必须具有IModuleInfo接口。

注意

如果使用解决方案向导创建XAF解决方案,则默认情况下会自动添加ModuleInfo实体。

代码优先

XAF为代码优先提供了一个内置的IModuleInfo实现器:ModuleInfo实体。如果使用“代码优先”,请在DbContext后代中注册此实体。

public class MyDbContext : DbContext {
    // ...
    public DbSet<DevExpress.ExpressApp.EF.Updating.ModuleInfo> ModuleInfo { get; set; }
}

模特第一

如果使用“模型优先”,请在设计器中添加以下实体。

EF_ModuleInfo

ModuleInfo.csModuleInfo.vb)文件中,指定ModuleInfo实体支持IModuleInfo接口。要隐藏ModuleInfo从用户界面,应用可浏览属性,并通过虚假作为参数。

[Browsable(false)]
public partial class ModuleInfo : IModuleInfo {
}

应用上述更改后,将在应用程序数据库中创建EmployeeTask记录。

转载保留此链接,注明出处