Designing Databases with CodeFluent Entities: Inheritance
CodeFluent Entities tries to reduce the impedance mismatch between relational worlds and object-oriented worlds as much as possible and a good example of this I guess is how CodeFluent Entities supports inheritance across layers of your application.
Using CodeFluent Entities, an entity hierarchy defined in your model will be translated following the Table-Per-Type pattern in the persistence layer, when, in the generated business object model, this will be a regular class inheritance.
For instance, say we have the following hierarchy:
Here’s the result in the database:
Furthermore, data access methods will be modified accordingly to load the objects as expected in .NET. For instance, here’s the “Load” stored procedure that is automatically generated for the DiscountProduct entity:
CREATE PROCEDURE [dbo].[DiscountProduct_Load] ( @Id [uniqueidentifier] ) AS SET NOCOUNT ON SELECT DISTINCT [DiscountProduct].*, Product].* FROM [DiscountProduct] INNER JOIN [Product] ON ([DiscountProduct].[Product_Id] = [Product].[Product_Id]) WHERE ([DiscountProduct].[Product_Id] = @Id) RETURN