
XPO
文章平均质量分 93
Free .NET ORM Library (XPO)
汤姆•猫
70后码农
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
11-03 Connect the XPO Profiler to an ASP.NET Core Application(将 XPO 分析器连接到 ASP.NET Core 应用程序)~11-04
XpoProfilerTokenHandler.ValidToken常量值(本例中为“xpoxpo”)是您应该在XPO分析器的身份验证对话框中指定的令牌,以连接到您的Web应用程序。在Startup. cs文件中声明的Startup.ConfigreServices方法中注册您的自定义身份验证处理程序。将Authorize属性应用于您的XpoLoggerController类(在连接设置部分中演示)。启用或禁用记录器的静态字段、环境变量或配置选项。XPO Profiler使用管道名称连接到应用程序。原创 2024-11-04 14:00:47 · 1535 阅读 · 0 评论 -
11-02 Profile Your Application(分析你的应用程序)
在这种情况下,创建的对象将使用通过XpoDefault类的静态成员指定的数据库连接。Profile it!诊断这些问题没有通用的解决方案,推荐的方法是分析应用程序执行以查找过多的SQL查询。分析器允许您测试您的应用程序,以了解您的缓存配置如何影响应用程序,从缓存中检索哪些查询,以及SQL服务器执行哪些查询。因此,您不应该在与创建它们的线程不同的线程中使用这些类的实例。当您收集了足够的信息并希望完成分析时,请通过单击工具栏中的停止图标来停止分析会话。使用此菜单可查看分析器保存的所有布局,并删除不必要的布局。原创 2024-10-30 12:58:19 · 958 阅读 · 0 评论 -
11 XPO Profiler(XPO 分析器)&& 11-01 Set Up the Profiler(设置分析器)
如果您需要分析远程安装的应用程序,那么除了修补应用程序配置文件之外,您还需要使用XPOProfilerProxy实用程序。默认端口号为52934。写下您在配置文件中指定的端口号,因为在将分析器连接到应用程序时需要再次指定它。应用程序的Web. config配置文件将被修补,三个文件-IMyLogService.cs、MyLogService.svc和MyLogService.svc.cs将被添加到解决方案中。如果要分析在中等信任环境中运行的ASP.NET应用程序,请指定托管应用程序的服务器使用的端口号。原创 2024-10-29 11:19:30 · 585 阅读 · 0 评论 -
10-31 How to: Use the ContainsOperator for Objects in a Many-to-Many Relationship
Containsoperator检查可选过滤的集合是否包含至少一个对象。返回一个布尔值,该值指示Orders集合中是否有任何项目。原创 2024-10-29 10:52:56 · 48 阅读 · 0 评论 -
10-27 How to: Obtain a Collection of Persistent Objects for Processing(如何:获取用于处理的持久对象集合)~10-30
默认情况下,这个属性是非持久化的,它的值可以存储在私有字段中。要将其标记为持久化,请在带有只读属性名称的字段中添加一个PersitentAtual。这个名称将用作与持久化对象对应的数据库表中的列的名称。在本文档中,您将学习如何定义持久对象的只读持久属性。通常,XPO只存储可写属性,但在某些场景下,您可能需要在数据库中存储只读属性的值。然后我们遍历XPCollection和XPCursor的内容并修改检索到的对象的值。使用只读持久属性的另一个有用示例是保存对象的创建日期。在数据库中创建和持久化对象。原创 2024-10-28 10:48:47 · 619 阅读 · 0 评论 -
10-23 How to: Make a Class or Property Non-Persistent(如何:使类或属性成为非持久化的)~10-26
默认情况下,XPO自动为对象指定数据库表(视图)和列名。但是,您可以借助PersitentAttory覆盖默认映射。当应用于类定义时,属性的参数指定表或视图名称。当应用于属性或字段定义时,参数指定列名。在下面的示例中,类联系人将存储在T_CONTACT表中,属性LastName将存储在ContactLastName列中。原创 2024-10-23 11:13:55 · 1077 阅读 · 0 评论 -
10-22 How to: Link Classes Located in Different Assemblies(如何:链接位于不同程序集中的类)
您可以使用XPO继承来实现当前程序集中的类(ClassLibrary2)和外部类库中的类(ClassLibrary1)之间的关系。在本例中,CustmedOrder类从另一个程序集继承Order类。这种技术允许您在不更改类的源代码的情况下实现类之间的一对多和多对多关系。使用XPClassInfo. FindClub方法访问代码中的成员,使用XPMemberInfo.GetValue和XPMemberInfo.SetValue方法获取和更改它们的值。本主题介绍如何实现在不同程序集中声明的XPO类之间的关系。原创 2024-10-22 08:16:07 · 622 阅读 · 0 评论 -
10-21 How to: Implement Custom Functions and Criteria in LINQ to XPO(如何:在 LINQ to XPO 中实现自定义函数和条件)
要使自定义函数或自定义条件在LINQ to XPO表达式中可用,您需要做的就是向您的函数类声明添加相应的接口实现(ICustomFunctionOperatorQueryable或ICustomCriteriaOperatorQueryable)。对于自定义条件,您还需要使用CustomCriteriaManager扩展注册代码。注册标准或CustomCriteriaManager。注册标准方法调用(见下面的详细信息)。原创 2024-10-21 20:06:06 · 139 阅读 · 0 评论 -
10-20 How to: Implement and Use Custom Aggregate Functions(如何:实现和使用自定义聚合函数)
本文介绍如何实现和使用计算不同项目的自定义聚合函数。本文假设您有一个带有客户和订单业务类的WinForms应用程序。Tip您可以在此处下载完整示例:如何实现自定义聚合创建CountDistinctCustomAggregate类并添加所需的use语句。实现ICustomAggregate、ICustomAggregateFormattable和ICustomAggregateQueryable接口。有关接口的不同之处的信息,请参阅自定义聚合函数一文。C#原创 2024-10-16 09:01:06 · 43 阅读 · 0 评论 -
10-18 How to: Implement a Custom Criteria Language Function Operator(如何:实现自定义条件语言函数运算符)~10-19
虽然XPO支持许多内置条件语言运算符,但您可能需要额外的函数运算符来进行复杂的计算,或者在您想要利用某些特定于数据库的函数的情况下。本主题演示如何基于Microsoft Access数据库引擎支持的DATEPART函数实现MyGetMonth函数(类似于内置的FunctionOperatorTypeGetMonth函数)。MyGetMonth函数返回指定日期的月份部分(作为数字)。原创 2024-10-15 09:02:13 · 919 阅读 · 0 评论 -
10-14 How to: Create an Aggregated Object(如何:创建聚合对象)~10-17
在程序执行期间,它由非持久对象实例表示,因此从数据库中加载对象实际上并不是构造新对象,而是恢复对象的状态。自然,在对象状态加载期间会分配对象属性,但这种分配与对象接口逻辑无关,有时必须以不同的方式处理。当从数据库加载对象时,Name属性被分配了一个值,这不应被视为名称修改,而应被视为初始化。在下面的代码示例中,DefaultAddress和Address属性被认为是Person对象的自然部分,因此我们将这些属性标记为聚合。我们没有将Address类标记为聚合,因为聚合是对象关联的属性,本身不是类。原创 2024-10-14 16:38:09 · 145 阅读 · 0 评论 -
10-10 How To: Connect XPO to a Database Server (ASP.NET WebForms)(如何:将 XPO 连接到数据库服务器 ~ 10-13
本质上,对象的XPBaseObject.Save方法是在编辑完成后调用的(IEditableObject. EndEdit()),静态XPBaseObject.AutoSaveOnEndEdit字段设置为true。由于SQLAzure数据库代表基于MicrosoftSQLServer技术构建的基于云的数据库服务,因此连接需要相同的连接提供程序MSSqlConnectionProvider,该提供程序通过支持SQLAzure进行了扩展。要使用XPO访问数据库服务器,需要创建数据访问层并提供连接设置。原创 2024-10-11 09:10:57 · 151 阅读 · 0 评论 -
10-08 How to: Change Inheritance Mapping(如何:更改继承映射)&&10-09 How to: Connect to a SQL Server
设置XpoDefault. ConnectionString属性后,默认会话和使用默认参数手动创建的会话将使用指定的连接字符串。当前版本的XPO从给定的连接字符串中确定连接提供程序类型:如果它包含“初始目录”字符串,则将其识别为SQL服务器连接。通过使基类非持久化,您可以实现继承映射,其中所有属性(包括继承的)都存储在对应于后代类的表中。如果要将子代类的属性存储在基类表中,可以将继承映射类型更改为家长表。XPO完全支持持久对象的继承和多态性,即您可以检索基对象的集合,然后处理具体类的实际实例。原创 2024-10-10 18:49:58 · 789 阅读 · 0 评论 -
10-06 How to: Build Complex Criteria(如何:构建复杂标准)&& 10-07 How to: Build Simple Criteria(如何:构建简单标准)
在复杂的继承层次结构中,查询数据存储中的对象,其类型用作其后代的基类的类型(例如上面示例中Company类的Person类)会导致检索到基类型的对象及其后代。为了避免对集合检索到的对象类型的定义不明确,您可以显式指定希望出现在集合中的对象类型,如下面的代码示例所示。以下代码选择一组在其位置集合属性中包含地址的联系人对象,并且找到的地址对象的城市属性应等于Owner.DefaultAddress.City属性的值,即此人DefaultAddress.City属性的值。条件是表示逻辑表达式的对象树。原创 2024-10-09 11:56:21 · 823 阅读 · 1 评论 -
10-04 How to: Bind an XPCollection to the DataGrid && 10-05 How to: Bind an XPCollection to the Grid
网格不会自动为不可浏览的字段(请参阅System. ComponentModel.BrowsableAtual属性)和表示对象集合的字段创建列。在我们的示例中,“This”字段被标记为不可浏览,“Group”字段表示集合(在XPO中,任何持久属性始终表示为绑定机制中的对象集合)。在此示例中,网格控件应该显示Person对象,因此必须创建一个新的XPCollection并链接到Person类。通过在客户对象中的订单属性(主键)和订单对象中的客户属性(外键)之间创建关系,订单可以与特定客户相关联。原创 2024-10-02 08:51:31 · 875 阅读 · 0 评论 -
10-03 How to: Bind an XPCollection to Standard Controls(如何:将 XPCollection 绑定到标准控件)
所有数据编辑将通过编辑部分完成,该部分包含每个人属性的单独标准控件。将ComboBox的DataSource属性设置为“xpCollectionPositions”。将Display会员属性设置为“ PositionName”,将Value会员属性设置为“This”。”,数据源为“xpCollectionPositions”,显示成员为“PositionName”,价值成员为“ This”。(将“Person”持久类分配给XPCollection. ObjectClassInfo属性:)原创 2024-10-01 09:14:37 · 1043 阅读 · 0 评论 -
10-01 How to: Access Data in SQL Query Results(如何:在 SQL 查询结果中访问数据)&& 10-02 How to: Bind an
Key”项表示该人的Group属性引用的对象的键(唯一值)。Key”字段将返回该人的Group属性引用的GroupPerson对象的“Oid”字段的值。将新的XPCollection对象添加到表单中,将其称为xpColliceGroup并设置其XPCollection. ObjectClassInfo属性以引用PERGroup类(与上面的xpCollicePerson集合相同)。这表示特定类型的持久对象的集合。在属性窗口中展开列编辑属性,该属性现在显示新创建的LookUpEdit就地编辑器的设置。原创 2024-09-30 06:17:16 · 272 阅读 · 0 评论 -
09-04 FAQ: ORM Data Model Designer and Wizard(常见问题解答:对象关系映射数据模型设计器和向导)
此信息用于确定要实例化的类型。新生成的类在不同的命名空间和程序集中声明,并且声明它们的原始程序集不可用:XPO将无法加载此类对象。为此,请单击扩展/管理扩展菜单项,在管理扩展窗口中选择已安装选项卡,并在列表中找到上面提到的包。或者,右键单击“一个”侧类,从上下文菜单中选择“创建一对多关系”命令,并在对话框中选择相反的类。如果您有一个在代码中声明的类,请构建解决方案并按照以下部分中的说明进行操作:从另一个库中声明的现有类继承一个类。如果您已经有一个包含另一个类的键值(外键)的字段,请将字段类型更改为类引用。原创 2024-09-25 08:21:54 · 1123 阅读 · 0 评论 -
09-03 Data Model Wizard(数据模型向导)
为手动编辑创建部分声明选项将部分关键字添加到类声明中,并将每个类实现拆分为两个文件(例如,MyObject. cs和MyObject.Designer.cs)。带有“Designer”后缀的文件由设计器处理,不应手动编辑,因为设计器将覆盖您的更改。相反,您的代码应放置在没有“设计器”后缀的文件中。选择要映射到持久化对象(或多个持久化对象)的一个(或多个)表,并为每个表选择将映射到持久化对象属性的列。如果您在第一页选择创建新数据库选项,则向导将在指定数据库连接后完成,并将调用空的数据模型设计器。原创 2024-09-24 07:53:50 · 859 阅读 · 0 评论 -
09-02 Data Model Designer(数据模型设计器)
当模型或类的NullableBehaior属性设置为ByUnderlyingType并且持久属性的IsNullable属性设置为True时,设计器可以生成可为空的属性。使用工具箱中的继承工具使您声明的类继承自导入的类。导入的类也会出现在列类型选择组合框中,因此您可以在您的类中创建一个引用属性,该属性将指向导入的类。要编辑全局属性,如数据连接或设计类的命名空间,请单击设计器中的空白空间或在ORMDataModel窗口中聚焦根数据模型项。但是,您将能够使用添加的类作为祖先,并在设计器中从它们继承新的持久类。原创 2024-09-23 10:39:57 · 351 阅读 · 0 评论 -
09-03 Data Model Wizard(数据模型向导)
为手动编辑创建部分声明选项将部分关键字添加到类声明中,并将每个类实现拆分为两个文件(例如,MyObject. cs和MyObject.Designer.cs)。带有“Designer”后缀的文件由设计器处理,不应手动编辑,因为设计器将覆盖您的更改。相反,您的代码应放置在没有“设计器”后缀的文件中。选择要映射到持久化对象(或多个持久化对象)的一个(或多个)表,并为每个表选择将映射到持久化对象属性的列。如果您在第一页选择创建新数据库选项,则向导将在指定数据库连接后完成,并将调用空的数据模型设计器。原创 2024-09-20 09:05:18 · 838 阅读 · 0 评论 -
09-01 Built-in Visual Studio Templates(内置 Visual Studio 模板)&& 09-02 Data Model Designer(数据模型设计器)
当模型或类的NullableBehaior属性设置为ByUnderlyingType并且持久属性的IsNullable属性设置为True时,设计器可以生成可为空的属性。使用工具箱中的继承工具使您声明的类继承自导入的类。导入的类也会出现在列类型选择组合框中,因此您可以在您的类中创建一个引用属性,该属性将指向导入的类。要编辑全局属性,如数据连接或设计类的命名空间,请单击设计器中的空白空间或在ORMDataModel窗口中聚焦根数据模型项。但是,您将能够使用添加的类作为祖先,并在设计器中从它们继承新的持久类。原创 2024-09-19 09:08:03 · 944 阅读 · 0 评论 -
08-03 How to Log SQL Queries(如何记录 SQL 查询 )&& 08-04 How to Resolve ‘Cannot Modify Dictionary Because
在初始化ThreadSafeDataLayer之前,您需要创建XPO元数据,或者您可以选择不使用ThreadSafeDataLayer(见下面的示例)。当您使用带有特定参数的泛型类型时,XPO会创建新的持久元数据。您还可以创建自己的TraceListener类并将查询记录到数据库或输入框中。使用此工具,您可以记录SQL查询、跟踪特定于XPO的事件以及分析执行特定查询的方法。将相应的诊断开关添加到应用程序的配置文件(App. config或Web.config)中,以查看XPO生成的SQL查询。原创 2024-09-18 09:09:14 · 1145 阅读 · 0 评论 -
08-02 WPF Best Practices(WPF 最佳实践 )
因此,绑定到修改后的属性的其他编辑器或控件可能会显示先前的值,直到调用IEditableObject. EndEdit方法。没有必要使用EvalateAlias方法来实现计算的属性,因为您可以在代码中计算属性值。要实现关系的“多”端,请声明IList类型的属性并使用GetList方法而不是GetCollection。当您为WPF应用程序创建数据模型类时,从Persis entBase类继承XPO类。将Int32类型的属性添加到您的类并使用Key属性装饰此属性。装饰一个类,使用的是优化锁定属性。原创 2024-09-13 08:38:37 · 166 阅读 · 0 评论 -
08-01 XPO Best Practices(XPO 最佳实践 )
不要在持久对象的构造函数中执行耗时的操作。要添加自定义逻辑或初始化业务对象属性,请重写类的PersitentBase. AfterBuild()方法。您可以实现在属性设置器中的属性值更改后执行的自定义逻辑,或覆盖PersitentBase. OnChanged()方法。如果您必须将自定义逻辑添加到setter,请不要在以下时间间隔内更改或访问其他持久属性(直接或间接):(OnLoding和OnLoad事件之间(IsLoding为真))(在保存和保存事件之间(保存为真))C#set {原创 2024-09-12 08:49:45 · 390 阅读 · 0 评论 -
07-11 Custom Collection Types(自定义集合类型 )&& 07-12 Select Data from Multiple Tables(从多个表中选择数据 )
有时需要从标准XPCollection或XPCollection派生自定义集合类型。标准类型有一个特殊的构造函数,当它们必须初始化为关系集合时使用。这个特定的集合构造函数在两个方面相关:确保您的派生集合类型实现了它。在一对多关系的“one”侧的关系属性中,或在多对多关系两侧的属性中,您必须使用此构造函数来创建派生类型的集合。原创 2024-09-11 08:54:41 · 1168 阅读 · 0 评论 -
07-09 Delayed Loading(延迟加载 )&& 07-10 Optimistic Concurrency(乐观并发)
当对数据库中的对象进行修改时,乐观锁定字段被选中,如果它已被更改,XPO会抛出LockingException。为了控制启用了对象锁定选项的对象的对象锁定,在数据库模式更新期间,会在对象表的结构中添加一个新的系统字段(乐观锁定字段)。第一个查询检索对持久对象的引用,另一个查询检索持久对象的每个属性。如果您延迟了对象的大部分属性,则性能可能不会显着提高,并且对象可能会变得不必要的复杂。如果属性类型是持久类,则不考虑GroupName属性,并且组中的所有属性都单独加载。不要使用带有关联属性的延迟属性。原创 2024-09-10 08:49:54 · 121 阅读 · 0 评论 -
07-06 Direct SQL Queries(直接的 SQL 查询 )&& 07-07 NULL Value Handling Specifics(空值处理细节 )
更重要的是,您不能通过编写“Manager==NULL”来做到这一点,因为这也将与“null”进行比较,而“null”无法正确评估。在下面的代码示例中,员工简单类对应于通过上面显示的GetEmployeesSimpleData函数返回的结果集。如果您不想在XPDataView中显示所有类成员,或者它们的顺序与结果集不同,那么您可以提供额外的映射信息以正确的顺序获取正确的列,如下所示。假设这个经理是Mike。在XPO中,您可以对数据库执行直接SQL查询,并以标量值、结果集或对象集合的形式获取查询结果。原创 2024-09-09 14:15:57 · 1354 阅读 · 0 评论 -
07-04 Free Joins(免费加入 )&& 07-05 Stored Procedures(存储过程 )
With XPO, you can build criteria based on persistent objects that are not directly related (don’t have explicitly defined associations) using Free Joins. In essence, XPO allows you to join any persistent objects on a condition, calculate aggregate function原创 2024-09-06 07:40:43 · 725 阅读 · 0 评论 -
07-02 Filtering(过滤 )&& 07-03 Sorting(排序 )
XPO allows you to:XPO允许您:The following example demonstrates how to use LINQ to XPO to query the data store for those customers who are older than 40.以下示例演示如何使用LINQ to XPO查询40岁以上客户的数据存储。Using the Criteria Property(使用条件属性)Use the Criteria property (for e原创 2024-09-05 07:04:46 · 366 阅读 · 0 评论 -
06-04-02 XPO Level Transactions(XPO级别事务)&& 06-04-03 防止持久对象中的更改被自动提交 && 07-01 LINQ to XPO
除了调用XPQueryExten. Query<T>扩展方法之外,您还可以调用XPQueryExten.QueryInTransaction<T>方法以将所有内存中对象更改包含到查询结果中(就像启用了Session.InTransactionMode一样)。当修改的对象可能会影响结果时,XPO可能会从数据库中加载比预期更多的记录或所有记录。长时间运行的数据库级事务会导致多用户应用程序中的并发问题,长时间运行的XPO级事务不受此问题的影响,因为XPO只有在即将提交更改时才会启动短数据库事务。原创 2024-09-04 07:31:02 · 379 阅读 · 0 评论 -
06-03 Delete Persistent Objects(删除持久对象)&& 06-04-01 Database Level Transactions(数据库级事务)
Session.PurgeDeletedObjects方法将删除标记为已删除的对象,以及数据存储中的所有相应记录。当启用了延迟删除的对象被删除时,它将从关联的集合中删除。此行为是设计好的,因为延迟删除功能并非用于对象恢复,而是用于克服数据库级别的复杂外部索引约束。当启用了延迟删除的对象被删除时,它将从关联的集合中删除。此行为是设计好的,因为延迟删除功能并非用于对象恢复,而是用于克服数据库级别的复杂外部索引约束。默认情况下,标记为已删除的对象永远不会从对象存储中检索,除非它们被直接引用。原创 2024-09-03 07:26:38 · 548 阅读 · 0 评论 -
06-02 Reload Objects and Collections(重新加载对象和集合)&& 06-03 Delete Persistent Objects(删除持久对象)
如果启用了乐观并发选项,并且数据存储中的记录已被修改,XPO会重新加载对象的属性。Session.PurgeDeletedObjects方法将删除标记为已删除的对象,以及数据存储中的所有相应记录。这种技术避免了删除其他对象引用的对象时的数据库异常。此方法在数据存储中查询与集合的条件匹配的记录,并重新加载相应的对象。当启用了延迟删除的对象被删除时,它将从关联的集合中删除。当启用了延迟删除的对象被删除时,它将从关联的集合中删除。如果数据记录中字段的值与相应对象属性的值不同,则对象属性的值被数据存储中的值覆盖。原创 2024-09-02 08:10:07 · 1420 阅读 · 0 评论 -
06-01 Save Persistent Objects(保存持久对象)
要保存持久对象,请使用以下任何API:保存持久对象时,XPO会自动保存所有聚合的引用对象(请参阅AggregatedAtoral)以及数据存储中尚不存在的任何新创建的引用非聚合对象。当使用UnitOfWork时,无需单独保存每个持久对象。调用工作单元的UnitOfWork. ProstChange方法来保存对持久对象所做的所有更改。原创 2024-09-01 08:04:47 · 538 阅读 · 0 评论 -
05-14 Upcasting(向上转型 )
When using persistent class hierarchies, you often have to combine base and derived classes in a single query. However, this is challenging since the derived classes obviously have an extended set of properties. The article below shows how to reference the原创 2024-08-31 08:18:48 · 750 阅读 · 0 评论 -
05-13 XPO Classes Comparison(XPO 类比较 )
当对象从类派生时,会自动为该对象启用XPO功能。例如,OptimisticLockingAttribute会自动应用于从Persis entBase、XPBaseObject、XPCustomObject或XPObject类派生的对象。但是,当对象从XPLiteObject类派生时,此功能将被禁用。我们不建议对新数据库使用复合键或复合键。您可以从PersistentBase、XPBaseObject、XPObject、XPLiteObject和XPCustomObject类派生持久对象。原创 2024-08-30 08:07:00 · 384 阅读 · 0 评论 -
05-11 Value Converters(值转换器 )&& 05-12 Property Descriptors(属性描述符 )
通常,您不应该将这些控件绑定到Properties tyName. Oid,因为当一个新值设置到这种类型的属性时,会更改Property tyName的Oid字段,而不是属性名称本身。您还可以使用属性名称!此属性描述符与对象的键属性的值相匹配(对于从XPObject类派生的对象,此值由自动生成的Oid字段指定)。如果属性名称引用值类型的属性或非持久属性,则绑定到该属性的控件将接收该属性的值。如果属性名称引用持久属性,则控件将接收由属性名称引用的对象集合(如果该属性仅表示一对一关系,则该集合将仅包含一项)。原创 2024-08-29 08:07:27 · 359 阅读 · 0 评论 -
05-09 Define Database Indexes(定义数据库索引 )&& 05-10 Work with Structures(使用结构体工作 )
索引允许数据库在不扫描整个表的情况下查找表中的数据。您可以在单个属性(列)或属性组合(列)上创建索引。Note本主题中描述的属性不会影响现有的数据库模式,它们仅在您创建新的数据库表时才有效。如果您有现有的数据库表,请使用数据库服务器工具创建索引。原创 2024-08-28 08:20:30 · 1411 阅读 · 0 评论 -
05-07 Add Persistence to an Existing Hierarchy: Session-less Persistent Objects(为现有层次结构添加持久性:无会话持久对象
通过向对象添加持久性,您还需要确定要存储对象的哪些属性或字段以及应应用的映射和格式选项。使用XPO,可以通过使用以下属性标记所需的类、属性和字段来实现这一点:持久属性。使用此属性指定是否应存储类、属性或字段。默认情况下,XPO自动为持久化的对象指定数据库表(视图)和列名。您可以将相关名称作为参数传递给此属性以覆盖默*认映射。PersistentAliasAttribute使用此属性指定字段和属性之间的关联。属性的值通过持久化相应的字段来存储。原创 2024-08-27 08:26:55 · 944 阅读 · 0 评论 -
05-05 Generating Persistent Objects for Existing Data Tables(为现有数据表生成持久对象 )&&(为现有层次结构添加持久性:更改基础继承 )
与将持久性添加到现有类层次结构中的另一种选择相比,更改类的基本继承代表了一种更灵活的技术,用于操作持久性对象(例如处理对象的初始化、加载、保存或删除)和扩展其功能(例如添加集合属性)。请注意,相应的数据库提供程序集必须在您的机器上可用,否则向导将停止工作。为了区分存储在数据库中的持久对象的状态,应该使用对象标识值。在数据库中,它将由整数类型的自动生成的键字段表示。向导完成后,删除生成的MyDataModel. xpo文件(这里,“MyDataModel”是您在上面的步骤2中指定的名称)。原创 2024-08-26 09:06:23 · 1143 阅读 · 0 评论