MSL Belirtimi
Eşleme belirtimi dili (MSL), bir Entity Framework uygulamasının kavramsal modeli ile depolama modeli arasındaki eşlemeyi açıklayan XML tabanlı bir dildir.
Bir Entity Framework uygulamasında, eşleme meta verileri derleme zamanında bir .msl dosyasından (MSL ile yazılır) yüklenir. Entity Framework, sorguları kavramsal modele göre çevirip belirli komutları depolamak için çalışma zamanında eşleme meta verilerini kullanır.
Entity Framework Tasarım Aracı (EF Tasarım Aracı), eşleme bilgilerini tasarım zamanında bir .edmx dosyasında depolar. Derleme zamanında Entity Tasarım Aracı, çalışma zamanında Entity Framework tarafından gereken .msl dosyasını oluşturmak için bir .edmx dosyasındaki bilgileri kullanır
MSL'de başvuruda bulunılan tüm kavramsal veya depolama modeli türlerinin adları ilgili ad alanı adlarına göre nitelenmelidir. Kavramsal model ad alanı adı hakkında bilgi için bkz . CSDL Belirtimi. Depolama modeli ad alanı adı hakkında bilgi için bkz . SSDL Belirtimi.
MSL sürümleri XML ad alanlarına göre ayırt edilir.
MSL Sürümü | XML Ad Alanı |
---|---|
MSL v1 | urn:schemas-microsoft-com:windows:storage:mapping:CS |
MSL v2 | https://schemas.microsoft.com/ado/2008/09/mapping/cs |
MSL v3 | https://schemas.microsoft.com/ado/2009/11/mapping/cs |
Alias Öğesi (MSL)
Eşleme belirtimi dilindeki (MSL) Diğer Ad öğesi, kavramsal model ve depolama modeli ad alanları için diğer adları tanımlamak için kullanılan Mapping öğesinin alt öğesidir. MSL'de başvuruda bulunılan tüm kavramsal veya depolama modeli türlerinin adları ilgili ad alanı adlarına göre nitelenmelidir. Kavramsal model ad alanı adı hakkında bilgi için bkz. Schema Öğesi (CSDL). Depolama modeli ad alanı adı hakkında bilgi için bkz. Schema Öğesi (SSDL).
Diğer Ad öğesinin alt öğeleri olamaz.
Geçerli Öznitelikler
Aşağıdaki tabloda Alias öğesine uygulanabilecek öznitelikler açıklanmaktadır.
Öznitelik Adı | Gerekli | Değer |
---|---|---|
Anahtar | Evet | Value özniteliği tarafından belirtilen ad alanının diğer adı. |
Değer | Evet | Key öğesinin değerinin diğer ad olduğu ad alanı. |
Örnek
Aşağıdaki örnekte, c
kavramsal modelde tanımlanan türler için diğer adı tanımlayan bir Diğer Ad öğesi gösterilmektedir.
<Mapping Space="C-S"
xmlns="https://schemas.microsoft.com/ado/2009/11/mapping/cs">
<Alias Key="c" Value="SchoolModel"/>
<EntityContainerMapping StorageEntityContainer="SchoolModelStoreContainer"
CdmEntityContainer="SchoolModelEntities">
<EntitySetMapping Name="Courses">
<EntityTypeMapping TypeName="c.Course">
<MappingFragment StoreEntitySet="Course">
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
<ScalarProperty Name="Title" ColumnName="Title" />
<ScalarProperty Name="Credits" ColumnName="Credits" />
<ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
<EntitySetMapping Name="Departments">
<EntityTypeMapping TypeName="c.Department">
<MappingFragment StoreEntitySet="Department">
<ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
<ScalarProperty Name="Name" ColumnName="Name" />
<ScalarProperty Name="Budget" ColumnName="Budget" />
<ScalarProperty Name="StartDate" ColumnName="StartDate" />
<ScalarProperty Name="Administrator" ColumnName="Administrator" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
</EntityContainerMapping>
</Mapping>
AssociationEnd Öğesi (MSL)
Eşleme belirtimi dilindeki (MSL) AssociationEnd öğesi, kavramsal modeldeki bir varlık türünün değişiklik işlevleri temel alınan veritabanındaki saklı yordamlarla eşlendiğinde kullanılır. Değişiklik saklı yordamı değeri bir association özelliğinde tutulan bir parametre alırsa, AssociationEnd öğesi özellik değerini parametresiyle eşler. Daha fazla bilgi için aşağıdaki örnekte bakın.
Varlık türlerinin değişiklik işlevlerini saklı yordamlara eşleme hakkında daha fazla bilgi için bkz. ModificationFunctionMapping Öğesi (MSL) ve İzlenecek Yol: Varlığı Saklı Yordamlara Eşleme.
AssociationEnd öğesi aşağıdaki alt öğelere sahip olabilir:
- ScalarProperty
Geçerli Öznitelikler
Aşağıdaki tabloda AssociationEnd öğesi için geçerli olan öznitelikler açıklanmaktadır.
Öznitelik Adı | Gerekli | Değer |
---|---|---|
Associationset | Evet | Eşlenen ilişkilendirmenin adı. |
Başlangıç | Evet | Eşlenen ilişkilendirmeye karşılık gelen gezinti özelliğinin FromRole özniteliğinin değeri. Daha fazla bilgi için bkz. NavigationProperty Öğesi (CSDL). |
İşlem | Evet | Eşlenen ilişkilendirmeye karşılık gelen gezinti özelliğinin ToRole özniteliğinin değeri. Daha fazla bilgi için bkz. NavigationProperty Öğesi (CSDL). |
Örnek
Aşağıdaki kavramsal model varlık türünü göz önünde bulundurun:
<EntityType Name="Course">
<Key>
<PropertyRef Name="CourseID" />
</Key>
<Property Type="Int32" Name="CourseID" Nullable="false" />
<Property Type="String" Name="Title" Nullable="false" MaxLength="100"
FixedLength="false" Unicode="true" />
<Property Type="Int32" Name="Credits" Nullable="false" />
<NavigationProperty Name="Department"
Relationship="SchoolModel.FK_Course_Department"
FromRole="Course" ToRole="Department" />
</EntityType>
Ayrıca aşağıdaki saklı yordamı da göz önünde bulundurun:
CREATE PROCEDURE [dbo].[UpdateCourse]
@CourseID int,
@Title nvarchar(50),
@Credits int,
@DepartmentID int
AS
UPDATE Course SET Title=@Title,
Credits=@Credits,
DepartmentID=@DepartmentID
WHERE CourseID=@CourseID;
Varlığın güncelleştirme işlevini Course
bu saklı yordamla eşlemek için DepartmentID parametresine bir değer sağlamanız gerekir. değeri DepartmentID
varlık türündeki bir özelliğe karşılık gelmez; eşlemesi burada gösterilen bağımsız bir ilişkilendirmede yer alır:
<AssociationSetMapping Name="FK_Course_Department"
TypeName="SchoolModel.FK_Course_Department"
StoreEntitySet="Course">
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
</EndProperty>
<EndProperty Name="Department">
<ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
</EndProperty>
</AssociationSetMapping>
Aşağıdaki kod, FK_Course_Department ilişkisinin DepartmentID özelliğini UpdateCourse saklı yordamıyla eşlemek için kullanılan AssociationEnd öğesini gösterir (Kurs varlık türünün güncelleştirme işlevi eşlenir):
<EntitySetMapping Name="Courses">
<EntityTypeMapping TypeName="SchoolModel.Course">
<MappingFragment StoreEntitySet="Course">
<ScalarProperty Name="Credits" ColumnName="Credits" />
<ScalarProperty Name="Title" ColumnName="Title" />
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
</MappingFragment>
</EntityTypeMapping>
<EntityTypeMapping TypeName="SchoolModel.Course">
<ModificationFunctionMapping>
<UpdateFunction FunctionName="SchoolModel.Store.UpdateCourse">
<AssociationEnd AssociationSet="FK_Course_Department"
From="Course" To="Department">
<ScalarProperty Name="DepartmentID"
ParameterName="DepartmentID"
Version="Current" />
</AssociationEnd>
<ScalarProperty Name="Credits" ParameterName="Credits"
Version="Current" />
<ScalarProperty Name="Title" ParameterName="Title"
Version="Current" />
<ScalarProperty Name="CourseID" ParameterName="CourseID"
Version="Current" />
</UpdateFunction>
</ModificationFunctionMapping>
</EntityTypeMapping>
</EntitySetMapping>
AssociationSetMapping Öğesi (MSL)
Eşleme belirtimi dilindeki (MSL) AssociationSetMapping öğesi, kavramsal modeldeki bir ilişki ile temel alınan veritabanındaki tablo sütunları arasındaki eşlemeyi tanımlar.
Kavramsal modeldeki ilişkilendirmeler, özellikleri temel alınan veritabanındaki birincil ve yabancı anahtar sütunlarını temsil eden türlerdir. AssociationSetMapping öğesi, ilişkilendirme türü özellikleri ve veritabanındaki sütunlar arasındaki eşlemeleri tanımlamak için iki EndProperty öğesi kullanır. Koşul öğesiyle bu eşlemelere koşullar yerleştirebilirsiniz. İlişkilendirmeler için ekleme, güncelleştirme ve silme işlevlerini ModificationFunctionMapping öğesiyle veritabanındaki saklı yordamlarla eşleyin. QueryView öğesinde Entity SQL dizesi kullanarak ilişkilendirmeler ve tablo sütunları arasında salt okunur eşlemeler tanımlayın.
Dekont
Kavramsal modeldeki bir ilişkilendirme için bilgi kısıtlaması tanımlanmışsa, ilişkilendirmenin bir AssociationSetMapping öğesiyle eşlenmesi gerekmez. Bilgi kısıtlaması olan bir ilişkilendirme için bir AssociationSetMapping öğesi varsa, AssociationSetMapping öğesinde tanımlanan eşlemeler yoksayılır. Daha fazla bilgi için bkz. ReferentialConstraint Öğesi (CSDL).
AssociationSetMapping öğesi aşağıdaki alt öğelere sahip olabilir
- QueryView (sıfır veya bir)
- EndProperty (sıfır veya iki)
- Koşul (sıfır veya daha fazla)
- ModificationFunctionMapping (sıfır veya bir)
Geçerli Öznitelikler
Aşağıdaki tabloda AssociationSetMapping öğesine uygulanabilecek öznitelikler açıklanmaktadır.
Öznitelik Adı | Gerekli | Değer |
---|---|---|
Ad | Evet | Eşlenen kavramsal model ilişkilendirme kümesinin adı. |
Typename | Hayır | Eşlenen kavramsal model ilişkilendirme türünün ad alanı nitelenmiş adı. |
StoreEntitySet | Hayır | Eşlenen tablonun adı. |
Örnek
Aşağıdaki örnekte, kavramsal modelde ayarlanan FK_Course_Department ilişkilendirmesinin veritabanındaki Course tablosuna eşlendiği bir AssociationSetMapping öğesi gösterilmektedir. İlişkilendirme türü özellikleri ve tablo sütunları arasındaki eşlemeler alt EndProperty öğelerinde belirtilir.
<AssociationSetMapping Name="FK_Course_Department"
TypeName="SchoolModel.FK_Course_Department"
StoreEntitySet="Course">
<EndProperty Name="Department">
<ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
</EndProperty>
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
</EndProperty>
</AssociationSetMapping>
ComplexProperty Öğesi (MSL)
Eşleme belirtimi dilindeki (MSL) ComplexProperty öğesi, kavramsal model varlık türündeki karmaşık tür özelliği ile temel veritabanındaki tablo sütunları arasındaki eşlemeyi tanımlar. Özellik sütunu eşlemeleri alt ScalarProperty öğelerinde belirtilir.
ComplexType özellik öğesi aşağıdaki alt öğelere sahip olabilir:
- ScalarProperty (sıfır veya daha fazla)
- ComplexProperty (sıfır veya daha fazla)
- ComplexTypeMapping (sıfır veya daha fazla)
- Koşul (sıfır veya daha fazla)
Geçerli Öznitelikler
Aşağıdaki tabloda ComplexProperty öğesi için geçerli olan öznitelikler açıklanmaktadır:
Öznitelik Adı | Gerekli | Değer |
---|---|---|
Ad | Evet | Eşlenen kavramsal modelde bir varlık türünün karmaşık özelliğinin adı. |
Typename | Hayır | Kavramsal model özellik türünün ad alanı nitelenmiş adı. |
Örnek
Aşağıdaki örnek, Okul modelini temel alır. Kavramsal modele aşağıdaki karmaşık tür eklendi:
<ComplexType Name="FullName">
<Property Type="String" Name="LastName"
Nullable="false" MaxLength="50"
FixedLength="false" Unicode="true" />
<Property Type="String" Name="FirstName"
Nullable="false" MaxLength="50"
FixedLength="false" Unicode="true" />
</ComplexType>
Kişi varlık türünün LastName ve FirstName özellikleri, Name adlı karmaşık bir özellikle değiştirildi:
<EntityType Name="Person">
<Key>
<PropertyRef Name="PersonID" />
</Key>
<Property Name="PersonID" Type="Int32" Nullable="false"
annotation:StoreGeneratedPattern="Identity" />
<Property Name="HireDate" Type="DateTime" />
<Property Name="EnrollmentDate" Type="DateTime" />
<Property Name="Name" Type="SchoolModel.FullName" Nullable="false" />
</EntityType>
Aşağıdaki MSL, Name özelliğini temel alınan veritabanındaki sütunlara eşlemek için kullanılan ComplexProperty öğesini gösterir:
<EntitySetMapping Name="People">
<EntityTypeMapping TypeName="SchoolModel.Person">
<MappingFragment StoreEntitySet="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
<ScalarProperty Name="HireDate" ColumnName="HireDate" />
<ScalarProperty Name="EnrollmentDate" ColumnName="EnrollmentDate" />
<ComplexProperty Name="Name" TypeName="SchoolModel.FullName">
<ScalarProperty Name="FirstName" ColumnName="FirstName" />
<ScalarProperty Name="LastName" ColumnName="LastName" />
</ComplexProperty>
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
ComplexTypeMapping Öğesi (MSL)
Eşleme belirtimi dilinde (MSL) ComplexTypeMapping öğesi ResultMapping öğesinin alt öğesidir ve kavramsal modeldeki bir işlev içeri aktarması ile aşağıdakiler doğru olduğunda temel alınan veritabanındaki saklı yordam arasındaki eşlemeyi tanımlar:
- İşlev içeri aktarma işlemi kavramsal karmaşık bir tür döndürür.
- Saklı yordam tarafından döndürülen sütunların adları, karmaşık türdeki özelliklerin adlarla tam olarak eşleşmez.
Varsayılan olarak, saklı yordam tarafından döndürülen sütunlar ile karmaşık bir tür arasındaki eşleme, sütun ve özellik adlarını temel alır. Sütun adları özellik adlarına tam olarak uymuyorsa, eşlemeyi tanımlamak için ComplexTypeMapping öğesini kullanmanız gerekir. Varsayılan eşleme örneği için bkz. FunctionImportMapping Öğesi (MSL).
ComplexTypeMapping öğesi aşağıdaki alt öğelere sahip olabilir:
- ScalarProperty (sıfır veya daha fazla)
Geçerli Öznitelikler
Aşağıdaki tabloda ComplexTypeMapping öğesi için geçerli olan öznitelikler açıklanmaktadır.
Öznitelik Adı | Gerekli | Değer |
---|---|---|
Typename | Evet | Eşlenen karmaşık türün ad alanı nitelenmiş adı. |
Örnek
Aşağıdaki saklı yordamı göz önünde bulundurun:
CREATE PROCEDURE [dbo].[GetGrades]
@student_Id int
AS
SELECT EnrollmentID as enroll_id,
Grade as grade,
CourseID as course_id,
StudentID as student_id
FROM dbo.StudentGrade
WHERE StudentID = @student_Id
Ayrıca aşağıdaki kavramsal model karmaşık türünü de göz önünde bulundurun:
<ComplexType Name="GradeInfo">
<Property Type="Int32" Name="EnrollmentID" Nullable="false" />
<Property Type="Decimal" Name="Grade" Nullable="true"
Precision="3" Scale="2" />
<Property Type="Int32" Name="CourseID" Nullable="false" />
<Property Type="Int32" Name="StudentID" Nullable="false" />
</ComplexType>
Önceki karmaşık türün örneklerini döndüren bir işlev içeri aktarması oluşturmak için, saklı yordam tarafından döndürülen sütunlar ile varlık türü arasındaki eşleme bir ComplexTypeMapping öğesinde tanımlanmalıdır:
<FunctionImportMapping FunctionImportName="GetGrades"
FunctionName="SchoolModel.Store.GetGrades" >
<ResultMapping>
<ComplexTypeMapping TypeName="SchoolModel.GradeInfo">
<ScalarProperty Name="EnrollmentID" ColumnName="enroll_id"/>
<ScalarProperty Name="CourseID" ColumnName="course_id"/>
<ScalarProperty Name="StudentID" ColumnName="student_id"/>
<ScalarProperty Name="Grade" ColumnName="grade"/>
</ComplexTypeMapping>
</ResultMapping>
</FunctionImportMapping>
Condition Öğesi (MSL)
Eşleme belirtimi dilindeki (MSL) Koşul öğesi, kavramsal model ile temel alınan veritabanı arasındaki eşlemelere koşullar yerleştirir. Bir XML düğümü içinde tanımlanan eşleme, alt Koşul öğelerinde belirtildiği gibi tüm koşullar karşılanırsa geçerlidir. Aksi takdirde eşleme geçerli değildir. Örneğin, bir MappingFragment öğesi bir veya daha fazla Koşul alt öğesi içeriyorsa, MappingFragment düğümünde tanımlanan eşleme yalnızca alt Koşul öğelerinin tüm koşulları karşılandığında geçerli olur.
Her koşul bir Name (Name özniteliği tarafından belirtilen kavramsal model varlık özelliğinin adı) veya columnName (veritabanındaki ColumnName özniteliği tarafından belirtilen sütunun adı) için geçerli olabilir. Name özniteliği ayarlandığında, koşul bir varlık özellik değeriyle karşılaştırılır. ColumnName özniteliği ayarlandığında, koşul bir sütun değeriyle karşılaştırılır. Bir Koşul öğesinde Name veya ColumnName özniteliğinden yalnızca biri belirtilebilir.
Dekont
Condition öğesi bir FunctionImportMapping öğesi içinde kullanıldığında, yalnızca Name özniteliği geçerli değildir.
Condition öğesi aşağıdaki öğelerin alt öğesi olabilir:
- AssociationSetMapping
- Complexproperty
- EntitySetMapping
- MappingFragment
- EntityTypeMapping
Condition öğesinin alt öğesi olamaz.
Geçerli Öznitelikler
Aşağıdaki tabloda Condition öğesi için geçerli olan öznitelikler açıklanmaktadır:
Öznitelik Adı | Gerekli | Değer |
---|---|---|
Columnname | Hayır | Koşulu değerlendirmek için değeri kullanılan tablo sütununun adı. |
Isnull | Hayır | True veya False. Değer True ve sütun değeri null ise veya değer False ise ve sütun değeri null değilse koşul true olur. Aksi takdirde koşul false şeklindedir. IsNull ve Value öznitelikleri aynı anda kullanılamaz. |
Değer | Hayır | Sütun değerinin karşılaştırıldığı değer. Değerler aynıysa, koşul true olur. Aksi takdirde koşul false şeklindedir. IsNull ve Value öznitelikleri aynı anda kullanılamaz. |
Ad | Hayır | Koşulu değerlendirmek için değeri kullanılan kavramsal model varlık özelliğinin adı. Condition öğesi bir FunctionImportMapping öğesi içinde kullanılıyorsa bu öznitelik geçerli değildir. |
Örnek
Aşağıdaki örnek, MappingFragment öğelerinin alt öğeleri olarak Koşul öğelerini gösterir. HireDate null olmadığında ve EnrollmentDate null olduğunda, veriler SchoolModel.Instructor türü ile Kişi tablosunun PersonID ve HireDate sütunları arasında eşlenir. EnrollmentDate null olmadığında ve HireDate null olduğunda, veriler SchoolModel.Student türü ile Kişi tablosunun PersonID ve Kayıt sütunları arasında eşlenir.
<EntitySetMapping Name="People">
<EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Person)">
<MappingFragment StoreEntitySet="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
<ScalarProperty Name="FirstName" ColumnName="FirstName" />
<ScalarProperty Name="LastName" ColumnName="LastName" />
</MappingFragment>
</EntityTypeMapping>
<EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Instructor)">
<MappingFragment StoreEntitySet="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
<ScalarProperty Name="HireDate" ColumnName="HireDate" />
<Condition ColumnName="HireDate" IsNull="false" />
<Condition ColumnName="EnrollmentDate" IsNull="true" />
</MappingFragment>
</EntityTypeMapping>
<EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Student)">
<MappingFragment StoreEntitySet="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
<ScalarProperty Name="EnrollmentDate"
ColumnName="EnrollmentDate" />
<Condition ColumnName="EnrollmentDate" IsNull="false" />
<Condition ColumnName="HireDate" IsNull="true" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
DeleteFunction Öğesi (MSL)
Eşleme belirtimi dilindeki (MSL) DeleteFunction öğesi, kavramsal modeldeki bir varlık türünün veya ilişkilendirmenin delete işlevini temel alınan veritabanındaki saklı yordamla eşler. Değişiklik işlevlerinin eşlendiği saklı yordamların depolama modelinde bildirilmesi gerekir. Daha fazla bilgi için bkz. İşlev Öğesi (SSDL).
Dekont
Varlık türünün ekleme, güncelleştirme veya silme işlemlerinin üçünü de saklı yordamlarla eşlemezseniz, eşlenmemiş işlemler çalışma zamanında yürütülürse ve bir UpdateException oluşturulursa başarısız olur.
EntityTypeMapping'e Uygulanan DeleteFunction
EntityTypeMapping öğesine uygulandığında , DeleteFunction öğesi kavramsal modeldeki bir varlık türünün delete işlevini saklı yordamla eşler.
DeleteFunction öğesi, bir EntityTypeMapping öğesine uygulandığında aşağıdaki alt öğelere sahip olabilir:
- AssociationEnd (sıfır veya daha fazla)
- ComplexProperty (sıfır veya daha fazla)
- ScalarProperty (sıfır veya daha fazla)
Geçerli Öznitelikler
Aşağıdaki tabloda, Bir EntityTypeMapping öğesine uygulandığında DeleteFunction öğesine uygulanabilecek öznitelikler açıklanmaktadır.
Öznitelik Adı | Gerekli | Değer |
---|---|---|
İşlevAdı | Evet | Delete işlevinin eşlendiği saklı yordamın ad alanı nitelenmiş adı. Saklı yordam, depolama modelinde bildirilmelidir. |
RowsAffectedParameter | Hayır | Etkilenen satır sayısını döndüren çıkış parametresinin adı. |
Örnek
Aşağıdaki örnek School modelini temel alır ve Kişi varlık türünün delete işlevini DeletePerson saklı yordamına eşleyen DeleteFunction öğesini gösterir. DeletePerson saklı yordamı depolama modelinde bildirilir.
<EntitySetMapping Name="People">
<EntityTypeMapping TypeName="SchoolModel.Person">
<MappingFragment StoreEntitySet="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
<ScalarProperty Name="LastName" ColumnName="LastName" />
<ScalarProperty Name="FirstName" ColumnName="FirstName" />
<ScalarProperty Name="HireDate" ColumnName="HireDate" />
<ScalarProperty Name="EnrollmentDate"
ColumnName="EnrollmentDate" />
</MappingFragment>
</EntityTypeMapping>
<EntityTypeMapping TypeName="SchoolModel.Person">
<ModificationFunctionMapping>
<InsertFunction FunctionName="SchoolModel.Store.InsertPerson">
<ScalarProperty Name="EnrollmentDate"
ParameterName="EnrollmentDate" />
<ScalarProperty Name="HireDate" ParameterName="HireDate" />
<ScalarProperty Name="FirstName" ParameterName="FirstName" />
<ScalarProperty Name="LastName" ParameterName="LastName" />
<ResultBinding Name="PersonID" ColumnName="NewPersonID" />
</InsertFunction>
<UpdateFunction FunctionName="SchoolModel.Store.UpdatePerson">
<ScalarProperty Name="EnrollmentDate"
ParameterName="EnrollmentDate"
Version="Current" />
<ScalarProperty Name="HireDate" ParameterName="HireDate"
Version="Current" />
<ScalarProperty Name="FirstName" ParameterName="FirstName"
Version="Current" />
<ScalarProperty Name="LastName" ParameterName="LastName"
Version="Current" />
<ScalarProperty Name="PersonID" ParameterName="PersonID"
Version="Current" />
</UpdateFunction>
<DeleteFunction FunctionName="SchoolModel.Store.DeletePerson">
<ScalarProperty Name="PersonID" ParameterName="PersonID" />
</DeleteFunction>
</ModificationFunctionMapping>
</EntityTypeMapping>
</EntitySetMapping>
AssociationSetMapping'e Uygulanan DeleteFunction
AssociationSetMapping öğesine uygulandığında DeleteFunction öğesi kavramsal modeldeki bir ilişkilendirmenin delete işlevini saklı yordamla eşler.
DeleteFunction öğesi, AssociationSetMapping öğesine uygulandığında aşağıdaki alt öğelere sahip olabilir:
- EndProperty
Geçerli Öznitelikler
Aşağıdaki tabloda, AssociationSetMapping öğesine uygulandığında DeleteFunction öğesine uygulanabilecek öznitelikler açıklanmaktadır.
Öznitelik Adı | Gerekli | Değer |
---|---|---|
İşlevAdı | Evet | Delete işlevinin eşlendiği saklı yordamın ad alanı nitelenmiş adı. Saklı yordam, depolama modelinde bildirilmelidir. |
RowsAffectedParameter | Hayır | Etkilenen satır sayısını döndüren çıkış parametresinin adı. |
Örnek
Aşağıdaki örnek School modelini temel alır ve CourseInstructor ilişkisinin delete işlevini DeleteCourseInstructor saklı yordamıyla eşlemek için kullanılan DeleteFunction öğesini gösterir. DeleteCourseInstructor saklı yordamı depolama modelinde bildirilir.
<AssociationSetMapping Name="CourseInstructor"
TypeName="SchoolModel.CourseInstructor"
StoreEntitySet="CourseInstructor">
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
</EndProperty>
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
</EndProperty>
<ModificationFunctionMapping>
<InsertFunction FunctionName="SchoolModel.Store.InsertCourseInstructor" >
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ParameterName="courseId"/>
</EndProperty>
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ParameterName="instructorId"/>
</EndProperty>
</InsertFunction>
<DeleteFunction FunctionName="SchoolModel.Store.DeleteCourseInstructor">
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ParameterName="courseId"/>
</EndProperty>
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ParameterName="instructorId"/>
</EndProperty>
</DeleteFunction>
</ModificationFunctionMapping>
</AssociationSetMapping>
EndProperty Öğesi (MSL)
Eşleme belirtimi dilindeki (MSL) EndProperty öğesi, kavramsal model ilişkisinin bitiş veya değiştirme işlevi ile temel alınan veritabanı arasındaki eşlemeyi tanımlar. Özellik-sütun eşlemesi bir alt ScalarProperty öğesinde belirtilir.
Bir EndProperty öğesi kavramsal model ilişkisinin sonuna yönelik eşlemeyi tanımlamak için kullanıldığında, associationSetMapping öğesinin alt öğesidir. EndProperty öğesi, kavramsal model ilişkisinin değişiklik işlevine yönelik eşlemeyi tanımlamak için kullanıldığında, InsertFunction öğesinin veya DeleteFunction öğesinin alt öğesidir.
EndProperty öğesi aşağıdaki alt öğelere sahip olabilir:
- ScalarProperty (sıfır veya daha fazla)
Geçerli Öznitelikler
Aşağıdaki tabloda EndProperty öğesi için geçerli olan öznitelikler açıklanmaktadır:
Öznitelik Adı | Gerekli | Değer |
---|---|---|
Ad | Evet | Eşlenen ilişkilendirme sonunun adı. |
Örnek
Aşağıdaki örnekte, kavramsal modeldeki FK_Course_Department ilişkilendirmesinin veritabanındaki Course tablosuna eşlendiği bir AssociationSetMapping öğesi gösterilmektedir. İlişkilendirme türü özellikleri ve tablo sütunları arasındaki eşlemeler alt EndProperty öğelerinde belirtilir.
<AssociationSetMapping Name="FK_Course_Department"
TypeName="SchoolModel.FK_Course_Department"
StoreEntitySet="Course">
<EndProperty Name="Department">
<ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
</EndProperty>
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
</EndProperty>
</AssociationSetMapping>
Örnek
Aşağıdaki örnekte EndProperty öğesinin bir ilişkilendirmenin (CourseInstructor) ekleme ve silme işlevlerini temel alınan veritabanındaki saklı yordamlarla eşlemesi gösterilmektedir. Eşlenen işlevler depolama modelinde bildirilir.
<AssociationSetMapping Name="CourseInstructor"
TypeName="SchoolModel.CourseInstructor"
StoreEntitySet="CourseInstructor">
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
</EndProperty>
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
</EndProperty>
<ModificationFunctionMapping>
<InsertFunction FunctionName="SchoolModel.Store.InsertCourseInstructor" >
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ParameterName="courseId"/>
</EndProperty>
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ParameterName="instructorId"/>
</EndProperty>
</InsertFunction>
<DeleteFunction FunctionName="SchoolModel.Store.DeleteCourseInstructor">
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ParameterName="courseId"/>
</EndProperty>
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ParameterName="instructorId"/>
</EndProperty>
</DeleteFunction>
</ModificationFunctionMapping>
</AssociationSetMapping>
EntityContainerMapping Öğesi (MSL)
Eşleme belirtimi dilindeki (MSL) EntityContainerMapping öğesi, kavramsal modeldeki varlık kapsayıcısını depolama modelindeki varlık kapsayıcısına eşler. EntityContainerMapping öğesi, Mapping öğesinin alt öğesidir.
EntityContainerMapping öğesi aşağıdaki alt öğelere sahip olabilir (listelenen sırayla):
- EntitySetMapping (sıfır veya daha fazla)
- AssociationSetMapping (sıfır veya daha fazla)
- FunctionImportMapping (sıfır veya daha fazla)
Geçerli Öznitelikler
Aşağıdaki tabloda EntityContainerMapping öğesine uygulanabilecek öznitelikler açıklanmaktadır.
Öznitelik Adı | Gerekli | Değer |
---|---|---|
Depolama ModelContainer | Evet | Eşlenen depolama modeli varlık kapsayıcısının adı. |
CdmEntityContainer | Evet | Eşlenen kavramsal model varlık kapsayıcısının adı. |
GenerateUpdateViews | Hayır | True veya False. False ise, hiçbir güncelleştirme görünümü oluşturulmaz. Veriler başarıyla gidiş dönüş yapamadığı için geçersiz olacak bir salt okunur eşlemeniz olduğunda bu öznitelik False olarak ayarlanmalıdır. Varsayılan değer True'dur. |
Örnek
Aşağıdaki örnekte SchoolModelEntities kapsayıcısını (kavramsal model varlık kapsayıcısı) SchoolModelStoreContainer kapsayıcısına (depolama modeli varlık kapsayıcısı) eşleyen bir EntityContainerMapping öğesi gösterilmektedir:
<EntityContainerMapping StorageEntityContainer="SchoolModelStoreContainer"
CdmEntityContainer="SchoolModelEntities">
<EntitySetMapping Name="Courses">
<EntityTypeMapping TypeName="c.Course">
<MappingFragment StoreEntitySet="Course">
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
<ScalarProperty Name="Title" ColumnName="Title" />
<ScalarProperty Name="Credits" ColumnName="Credits" />
<ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
<EntitySetMapping Name="Departments">
<EntityTypeMapping TypeName="c.Department">
<MappingFragment StoreEntitySet="Department">
<ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
<ScalarProperty Name="Name" ColumnName="Name" />
<ScalarProperty Name="Budget" ColumnName="Budget" />
<ScalarProperty Name="StartDate" ColumnName="StartDate" />
<ScalarProperty Name="Administrator" ColumnName="Administrator" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
</EntityContainerMapping>
EntitySetMapping Öğesi (MSL)
Eşleme belirtimi dilindeki (MSL) EntitySetMapping öğesi, kavramsal model varlık kümesindeki tüm türleri depolama modelindeki varlık kümelerine eşler. Kavramsal modeldeki varlık kümesi, aynı türdeki (ve türetilmiş türlerdeki) varlıkların örnekleri için mantıksal bir kapsayıcıdır. Depolama modelindeki varlık kümesi, temel alınan veritabanındaki bir tabloyu veya görünümü temsil eder. Kavramsal model varlık kümesi, EntitySetMapping öğesinin Name özniteliğinin değeriyle belirtilir. Eşlenen tablo veya görünüm, her alt MappingFragment öğesinde veya EntitySetMapping öğesinin kendisinde StoreEntitySet özniteliği tarafından belirtilir.
EntitySetMapping öğesi aşağıdaki alt öğelere sahip olabilir:
- EntityTypeMapping (sıfır veya daha fazla)
- QueryView (sıfır veya bir)
- MappingFragment (sıfır veya daha fazla)
Geçerli Öznitelikler
Aşağıdaki tabloda EntitySetMapping öğesine uygulanabilecek öznitelikler açıklanmaktadır.
Öznitelik Adı | Gerekli | Değer |
---|---|---|
Ad | Evet | Eşlenen kavramsal model varlık kümesinin adı. |
TypeName1 | Hayır | Eşlenen kavramsal model varlık türünün adı. |
StoreEntitySet1 | Hayır | Eşlenen depolama modeli varlık kümesinin adı. |
MakeColumnsDistinct | Hayır | Yalnızca farklı satırların döndürülerek döndürülmediğine bağlı olarak True veya False . Bu öznitelik True olarak ayarlanırsa, EntityContainerMapping öğesinin GenerateUpdateViews özniteliği False olarak ayarlanmalıdır. |
1TypeName ve StoreEntitySet öznitelikleri, tek bir varlık türünü tek bir tabloyla eşlemek için EntityTypeMapping ve MappingFragment alt öğelerinin yerine kullanılabilir.
Örnek
Aşağıdaki örnekte, kavramsal modelin Courses varlık kümesindeki üç türü (temel tür ve iki tür) temel alınan veritabanındaki üç farklı tabloyla eşleyen bir EntitySetMapping öğesi gösterilmektedir. Tablolar, her MappingFragment öğesinde StoreEntitySet özniteliği tarafından belirtilir.
<EntitySetMapping Name="Courses">
<EntityTypeMapping TypeName="IsTypeOf(SchoolModel1.Course)">
<MappingFragment StoreEntitySet="Course">
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
<ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
<ScalarProperty Name="Credits" ColumnName="Credits" />
<ScalarProperty Name="Title" ColumnName="Title" />
</MappingFragment>
</EntityTypeMapping>
<EntityTypeMapping TypeName="IsTypeOf(SchoolModel1.OnlineCourse)">
<MappingFragment StoreEntitySet="OnlineCourse">
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
<ScalarProperty Name="URL" ColumnName="URL" />
</MappingFragment>
</EntityTypeMapping>
<EntityTypeMapping TypeName="IsTypeOf(SchoolModel1.OnsiteCourse)">
<MappingFragment StoreEntitySet="OnsiteCourse">
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
<ScalarProperty Name="Time" ColumnName="Time" />
<ScalarProperty Name="Days" ColumnName="Days" />
<ScalarProperty Name="Location" ColumnName="Location" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
EntityTypeMapping Öğesi (MSL)
Eşleme belirtimi dilindeki (MSL) EntityTypeMapping öğesi, kavramsal modeldeki bir varlık türü ile temel alınan veritabanındaki tablolar veya görünümler arasındaki eşlemeyi tanımlar. Kavramsal model varlık türleri ve temel veritabanı tabloları veya görünümleri hakkında bilgi için bkz. EntityType Öğesi (CSDL) ve EntitySet Öğesi (SSDL). Eşlenen kavramsal model varlık türü, EntityTypeMapping öğesinin TypeName özniteliği tarafından belirtilir. Eşlenen tablo veya görünüm, alt MappingFragment öğesinin StoreEntitySet özniteliği tarafından belirtilir.
ModificationFunctionMapping alt öğesi, varlık türlerinin ekleme, güncelleştirme veya silme işlevlerini veritabanındaki saklı yordamlarla eşlemek için kullanılabilir.
EntityTypeMapping öğesi aşağıdaki alt öğelere sahip olabilir:
- MappingFragment (sıfır veya daha fazla)
- ModificationFunctionMapping (sıfır veya bir)
- ScalarProperty
- Koşul
Dekont
MappingFragment ve ModificationFunctionMapping öğeleri, EntityTypeMapping öğesinin aynı anda alt öğeleri olamaz.
Dekont
ScalarProperty ve Condition öğeleri yalnızca bir FunctionImportMapping öğesi içinde kullanıldığında EntityTypeMapping öğesinin alt öğeleri olabilir.
Geçerli Öznitelikler
Aşağıdaki tabloda EntityTypeMapping öğesine uygulanabilecek öznitelikler açıklanmaktadır.
Öznitelik Adı | Gerekli | Değer |
---|---|---|
Typename | Evet | Eşlenen kavramsal model varlık türünün ad alanı nitelenmiş adı. Tür soyut veya türetilmiş bir türse, değeri olmalıdır IsOfType(Namespace-qualified_type_name) . |
Örnek
Aşağıdaki örnekte, iki alt EntityTypeMapping öğesine sahip bir EntitySetMapping öğesi gösterilmektedir. İlk EntityTypeMapping öğesinde SchoolModel.Person varlık türü Kişi tablosuna eşlenir. İkinci EntityTypeMapping öğesinde SchoolModel.Person türünün güncelleştirme işlevi veritabanındaki saklı bir yordam olan UpdatePerson ile eşlenir.
<EntitySetMapping Name="People">
<EntityTypeMapping TypeName="SchoolModel.Person">
<MappingFragment StoreEntitySet="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
<ScalarProperty Name="LastName" ColumnName="LastName" />
<ScalarProperty Name="FirstName" ColumnName="FirstName" />
<ScalarProperty Name="HireDate" ColumnName="HireDate" />
<ScalarProperty Name="EnrollmentDate" ColumnName="EnrollmentDate" />
</MappingFragment>
</EntityTypeMapping>
<EntityTypeMapping TypeName="SchoolModel.Person">
<ModificationFunctionMapping>
<UpdateFunction FunctionName="SchoolModel.Store.UpdatePerson">
<ScalarProperty Name="EnrollmentDate" ParameterName="EnrollmentDate"
Version="Current" />
<ScalarProperty Name="HireDate" ParameterName="HireDate"
Version="Current" />
<ScalarProperty Name="FirstName" ParameterName="FirstName"
Version="Current" />
<ScalarProperty Name="LastName" ParameterName="LastName"
Version="Current" />
<ScalarProperty Name="PersonID" ParameterName="PersonID"
Version="Current" />
</UpdateFunction>
</ModificationFunctionMapping>
</EntityTypeMapping>
</EntitySetMapping>
Örnek
Sonraki örnek, kök türün soyut olduğu tür hiyerarşisinin eşlemesini gösterir. TypeName öznitelikleri için söz diziminin kullanımına IsOfType
dikkat edin.
<EntitySetMapping Name="People">
<EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Person)">
<MappingFragment StoreEntitySet="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
<ScalarProperty Name="FirstName" ColumnName="FirstName" />
<ScalarProperty Name="LastName" ColumnName="LastName" />
</MappingFragment>
</EntityTypeMapping>
<EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Instructor)">
<MappingFragment StoreEntitySet="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
<ScalarProperty Name="HireDate" ColumnName="HireDate" />
<Condition ColumnName="HireDate" IsNull="false" />
<Condition ColumnName="EnrollmentDate" IsNull="true" />
</MappingFragment>
</EntityTypeMapping>
<EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Student)">
<MappingFragment StoreEntitySet="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
<ScalarProperty Name="EnrollmentDate"
ColumnName="EnrollmentDate" />
<Condition ColumnName="EnrollmentDate" IsNull="false" />
<Condition ColumnName="HireDate" IsNull="true" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
FunctionImportMapping Öğesi (MSL)
Eşleme belirtimi dilinde (MSL) FunctionImportMapping öğesi, kavramsal modeldeki bir işlev içeri aktarması ile temel alınan veritabanındaki saklı yordam veya işlev arasındaki eşlemeyi tanımlar. İşlev içeri aktarmaları kavramsal modelde bildirilmeli ve saklı yordamlar depolama modelinde bildirilmelidir. Daha fazla bilgi için bkz. FunctionImport Öğesi (CSDL) ve İşlev Öğesi (SSDL).
Dekont
Varsayılan olarak, bir işlev içeri aktarma kavramsal model varlık türü veya karmaşık bir tür döndürürse, temel alınan saklı yordam tarafından döndürülen sütunların adları kavramsal model türündeki özelliklerin adlarla tam olarak eşleşmelidir. Sütun adları özellik adları ile tam olarak eşleşmiyorsa eşlemenin ResultMapping öğesinde tanımlanması gerekir.
FunctionImportMapping öğesi aşağıdaki alt öğelere sahip olabilir:
- ResultMapping (sıfır veya daha fazla)
Geçerli Öznitelikler
Aşağıdaki tabloda FunctionImportMapping öğesi için geçerli olan öznitelikler açıklanmaktadır:
Öznitelik Adı | Gerekli | Değer |
---|---|---|
FunctionImportName | Evet | Eşlenen kavramsal modelde işlev içeri aktarma işleminin adı. |
İşlevAdı | Evet | Eşlenen depolama modelindeki işlevin ad alanı nitelenmiş adı. |
Örnek
Aşağıdaki örnek, Okul modelini temel alır. Depolama modelinde aşağıdaki işlevi göz önünde bulundurun:
<Function Name="GetStudentGrades" Aggregate="false"
BuiltIn="false" NiladicFunction="false"
IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion"
Schema="dbo">
<Parameter Name="StudentID" Type="int" Mode="In" />
</Function>
Kavramsal modelde bu işlevi içeri aktarmayı da göz önünde bulundurun:
<FunctionImport Name="GetStudentGrades" EntitySet="StudentGrades"
ReturnType="Collection(SchoolModel.StudentGrade)">
<Parameter Name="StudentID" Mode="In" Type="Int32" />
</FunctionImport>
Aşağıdaki örnekte, yukarıdaki işlev ve işlev içeri aktarmayı birbiriyle eşlemek için kullanılan functionImportMapping öğesi gösterilmektedir:
<FunctionImportMapping FunctionImportName="GetStudentGrades"
FunctionName="SchoolModel.Store.GetStudentGrades" />
InsertFunction Öğesi (MSL)
Eşleme belirtimi dilindeki (MSL) InsertFunction öğesi, kavramsal modeldeki bir varlık türünün veya ilişkilendirmenin insert işlevini temel alınan veritabanındaki saklı yordamla eşler. Değişiklik işlevlerinin eşlendiği saklı yordamların depolama modelinde bildirilmesi gerekir. Daha fazla bilgi için bkz. İşlev Öğesi (SSDL).
Dekont
Varlık türünün ekleme, güncelleştirme veya silme işlemlerinin üçünü de saklı yordamlarla eşlemezseniz, eşlenmemiş işlemler çalışma zamanında yürütülürse ve bir UpdateException oluşturulursa başarısız olur.
InsertFunction öğesi ModificationFunctionMapping öğesinin alt öğesi olabilir ve EntityTypeMapping öğesine veya AssociationSetMapping öğesine uygulanabilir.
EntityTypeMapping'e Uygulanan InsertFunction
EntityTypeMapping öğesine uygulandığında , InsertFunction öğesi kavramsal modeldeki bir varlık türünün insert işlevini saklı yordamla eşler.
Bir EntityTypeMapping öğesine uygulandığında InsertFunction öğesi aşağıdaki alt öğelere sahip olabilir:
- AssociationEnd (sıfır veya daha fazla)
- ComplexProperty (sıfır veya daha fazla)
- ResultBinding (sıfır veya bir)
- ScalarProperty (sıfır veya daha fazla)
Geçerli Öznitelikler
Aşağıdaki tabloda, bir EntityTypeMapping öğesine uygulandığında InsertFunction öğesine uygulanabilecek öznitelikler açıklanmaktadır.
Öznitelik Adı | Gerekli | Değer |
---|---|---|
İşlevAdı | Evet | Insert işlevinin eşlendiği saklı yordamın ad alanı nitelenmiş adı. Saklı yordam, depolama modelinde bildirilmelidir. |
RowsAffectedParameter | Hayır | Etkilenen satır sayısını döndüren çıkış parametresinin adı. |
Örnek
Aşağıdaki örnek School modelini temel alır ve Kişi varlık türünün insert işlevini InsertPerson saklı yordamıyla eşlemek için kullanılan InsertFunction öğesini gösterir. InsertPerson saklı yordamı depolama modelinde bildirilir.
<EntityTypeMapping TypeName="SchoolModel.Person">
<ModificationFunctionMapping>
<InsertFunction FunctionName="SchoolModel.Store.InsertPerson">
<ScalarProperty Name="EnrollmentDate"
ParameterName="EnrollmentDate" />
<ScalarProperty Name="HireDate" ParameterName="HireDate" />
<ScalarProperty Name="FirstName" ParameterName="FirstName" />
<ScalarProperty Name="LastName" ParameterName="LastName" />
<ResultBinding Name="PersonID" ColumnName="NewPersonID" />
</InsertFunction>
<UpdateFunction FunctionName="SchoolModel.Store.UpdatePerson">
<ScalarProperty Name="EnrollmentDate"
ParameterName="EnrollmentDate"
Version="Current" />
<ScalarProperty Name="HireDate" ParameterName="HireDate"
Version="Current" />
<ScalarProperty Name="FirstName" ParameterName="FirstName"
Version="Current" />
<ScalarProperty Name="LastName" ParameterName="LastName"
Version="Current" />
<ScalarProperty Name="PersonID" ParameterName="PersonID"
Version="Current" />
</UpdateFunction>
<DeleteFunction FunctionName="SchoolModel.Store.DeletePerson">
<ScalarProperty Name="PersonID" ParameterName="PersonID" />
</DeleteFunction>
</ModificationFunctionMapping>
</EntityTypeMapping>
AssociationSetMapping'e Uygulanan InsertFunction
AssociationSetMapping öğesine uygulandığında InsertFunction öğesi kavramsal modeldeki bir ilişkilendirmenin insert işlevini saklı yordamla eşler.
InsertFunction öğesi, AssociationSetMapping öğesine uygulandığında aşağıdaki alt öğelere sahip olabilir:
- EndProperty
Geçerli Öznitelikler
Aşağıdaki tabloda, AssociationSetMapping öğesine uygulandığında InsertFunction öğesine uygulanabilecek öznitelikler açıklanmaktadır.
Öznitelik Adı | Gerekli | Değer |
---|---|---|
İşlevAdı | Evet | Insert işlevinin eşlendiği saklı yordamın ad alanı nitelenmiş adı. Saklı yordam, depolama modelinde bildirilmelidir. |
RowsAffectedParameter | Hayır | Etkilenen satır sayısını döndüren çıkış parametresinin adı. |
Örnek
Aşağıdaki örnek School modelini temel alır ve CourseInstructor ilişkisinin insert işlevini InsertCourseInstructor saklı yordamıyla eşlemek için kullanılan InsertFunction öğesini gösterir. InsertCourseInstructor saklı yordamı depolama modelinde bildirilir.
<AssociationSetMapping Name="CourseInstructor"
TypeName="SchoolModel.CourseInstructor"
StoreEntitySet="CourseInstructor">
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
</EndProperty>
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
</EndProperty>
<ModificationFunctionMapping>
<InsertFunction FunctionName="SchoolModel.Store.InsertCourseInstructor" >
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ParameterName="courseId"/>
</EndProperty>
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ParameterName="instructorId"/>
</EndProperty>
</InsertFunction>
<DeleteFunction FunctionName="SchoolModel.Store.DeleteCourseInstructor">
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ParameterName="courseId"/>
</EndProperty>
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ParameterName="instructorId"/>
</EndProperty>
</DeleteFunction>
</ModificationFunctionMapping>
</AssociationSetMapping>
Eşleme Öğesi (MSL)
Eşleme belirtimi dilindeki (MSL) Eşleme öğesi, kavramsal modelde tanımlanan nesneleri bir veritabanına (depolama modelinde açıklandığı gibi) eşlemeye yönelik bilgiler içerir. Daha fazla bilgi için bkz. CSDL Belirtimi ve SSDL Belirtimi.
Mapping öğesi, eşleme belirtiminin kök öğesidir. Eşleme belirtimleri için XML ad alanı şeklindedir https://schemas.microsoft.com/ado/2009/11/mapping/cs
.
Eşleme öğesi aşağıdaki alt öğelere sahip olabilir (listelenen sırayla):
- Diğer ad (sıfır veya daha fazla)
- EntityContainerMapping (tam olarak bir)
MSL'de başvuruda bulunılan kavramsal ve depolama modeli türlerinin adları ilgili ad alanı adlarına göre nitelenmelidir. Kavramsal model ad alanı adı hakkında bilgi için bkz. Schema Öğesi (CSDL). Depolama modeli ad alanı adı hakkında bilgi için bkz. Schema Öğesi (SSDL). MSL'de kullanılan ad alanlarının diğer adları Diğer Ad öğesiyle tanımlanabilir.
Geçerli Öznitelikler
Aşağıdaki tabloda Mapping öğesine uygulanabilecek öznitelikler açıklanmaktadır.
Öznitelik Adı | Gerekli | Değer |
---|---|---|
Space | Evet | C-S. Bu sabit bir değerdir ve değiştirilemez. |
Örnek
Aşağıdaki örnekte School modelinin bir bölümünü temel alan bir Mapping öğesi gösterilmektedir. Okul modeli hakkında daha fazla bilgi için bkz. Hızlı Başlangıç (Entity Framework):
<Mapping Space="C-S"
xmlns="https://schemas.microsoft.com/ado/2009/11/mapping/cs">
<Alias Key="c" Value="SchoolModel"/>
<EntityContainerMapping StorageEntityContainer="SchoolModelStoreContainer"
CdmEntityContainer="SchoolModelEntities">
<EntitySetMapping Name="Courses">
<EntityTypeMapping TypeName="c.Course">
<MappingFragment StoreEntitySet="Course">
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
<ScalarProperty Name="Title" ColumnName="Title" />
<ScalarProperty Name="Credits" ColumnName="Credits" />
<ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
<EntitySetMapping Name="Departments">
<EntityTypeMapping TypeName="c.Department">
<MappingFragment StoreEntitySet="Department">
<ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
<ScalarProperty Name="Name" ColumnName="Name" />
<ScalarProperty Name="Budget" ColumnName="Budget" />
<ScalarProperty Name="StartDate" ColumnName="StartDate" />
<ScalarProperty Name="Administrator" ColumnName="Administrator" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
</EntityContainerMapping>
</Mapping>
MappingFragment Öğesi (MSL)
Eşleme belirtimi dilindeki (MSL) MappingFragment öğesi, kavramsal model varlık türünün özellikleriyle veritabanındaki bir tablo veya görünüm arasındaki eşlemeyi tanımlar. Kavramsal model varlık türleri ve temel veritabanı tabloları veya görünümleri hakkında bilgi için bkz. EntityType Öğesi (CSDL) ve EntitySet Öğesi (SSDL). MappingFragment, EntityTypeMapping öğesinin veya EntitySetMapping öğesinin alt öğesi olabilir.
MappingFragment öğesi aşağıdaki alt öğelere sahip olabilir:
- ComplexType (sıfır veya daha fazla)
- ScalarProperty (sıfır veya daha fazla)
- Koşul (sıfır veya daha fazla)
Geçerli Öznitelikler
Aşağıdaki tabloda MappingFragment öğesine uygulanabilecek öznitelikler açıklanmaktadır.
Öznitelik Adı | Gerekli | Değer |
---|---|---|
StoreEntitySet | Evet | Eşlenen tablonun veya görünümün adı. |
MakeColumnsDistinct | Hayır | Yalnızca farklı satırların döndürülerek döndürülmediğine bağlı olarak True veya False . Bu öznitelik True olarak ayarlanırsa, EntityContainerMapping öğesinin GenerateUpdateViews özniteliği False olarak ayarlanmalıdır. |
Örnek
Aşağıdaki örnekte, bir EntityTypeMapping öğesinin alt öğesi olarak mappingFragmentöğesi gösterilmektedir. Bu örnekte, kavramsal modeldeki Kurs türünün özellikleri veritabanındaki Course tablosunun sütunlarına eşlenir.
<EntitySetMapping Name="Courses">
<EntityTypeMapping TypeName="SchoolModel.Course">
<MappingFragment StoreEntitySet="Course">
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
<ScalarProperty Name="Title" ColumnName="Title" />
<ScalarProperty Name="Credits" ColumnName="Credits" />
<ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
Örnek
Aşağıdaki örnekte, bir MappingFragment öğesi EntitySetMapping öğesinin alt öğesi olarak gösterilmektedir. Yukarıdaki örnekte olduğu gibi, kavramsal modeldeki Kurs türünün özellikleri veritabanındaki Course tablosunun sütunlarına eşlenir.
<EntitySetMapping Name="Courses" TypeName="SchoolModel.Course">
<MappingFragment StoreEntitySet="Course">
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
<ScalarProperty Name="Title" ColumnName="Title" />
<ScalarProperty Name="Credits" ColumnName="Credits" />
<ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
</MappingFragment>
</EntitySetMapping>
ModificationFunctionMapping Öğesi (MSL)
Eşleme belirtimi dilindeki (MSL) ModificationFunctionMapping öğesi, kavramsal model varlık türünün ekleme, güncelleştirme ve silme işlevlerini temel alınan veritabanındaki saklı yordamlarla eşler. ModificationFunctionMapping öğesi ayrıca kavramsal modeldeki çoka çok ilişkilendirmeleri için ekleme ve silme işlevlerini temel alınan veritabanındaki saklı yordamlarla eşleyebilir. Değişiklik işlevlerinin eşlendiği saklı yordamların depolama modelinde bildirilmesi gerekir. Daha fazla bilgi için bkz. İşlev Öğesi (SSDL).
Dekont
Varlık türünün ekleme, güncelleştirme veya silme işlemlerinin üçünü de saklı yordamlarla eşlemezseniz, eşlenmemiş işlemler çalışma zamanında yürütülürse ve bir UpdateException oluşturulursa başarısız olur.
Dekont
Devralma hiyerarşisindeki bir varlığın değişiklik işlevleri saklı yordamlara eşlenmişse, hiyerarşideki tüm türlerin değişiklik işlevleri saklı yordamlara eşlenmelidir.
ModificationFunctionMapping öğesi, EntityTypeMapping öğesinin veya AssociationSetMapping öğesinin alt öğesi olabilir.
ModificationFunctionMapping öğesi aşağıdaki alt öğelere sahip olabilir:
- DeleteFunction (sıfır veya bir)
- InsertFunction (sıfır veya bir)
- UpdateFunction (sıfır veya bir)
ModificationFunctionMapping öğesi için hiçbir öznitelik geçerli değildir.
Örnek
Aşağıdaki örnekte, Okul modelindeki Kişiler varlık kümesinin varlık kümesi eşlemesi gösterilmektedir. Kişi varlık türü için sütun eşlemesine ek olarak, Kişi türünün ekleme, güncelleştirme ve silme işlevlerinin eşlemesi de gösterilir. Eşlenen işlevler depolama modelinde bildirilir.
<EntitySetMapping Name="People">
<EntityTypeMapping TypeName="SchoolModel.Person">
<MappingFragment StoreEntitySet="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
<ScalarProperty Name="LastName" ColumnName="LastName" />
<ScalarProperty Name="FirstName" ColumnName="FirstName" />
<ScalarProperty Name="HireDate" ColumnName="HireDate" />
<ScalarProperty Name="EnrollmentDate"
ColumnName="EnrollmentDate" />
</MappingFragment>
</EntityTypeMapping>
<EntityTypeMapping TypeName="SchoolModel.Person">
<ModificationFunctionMapping>
<InsertFunction FunctionName="SchoolModel.Store.InsertPerson">
<ScalarProperty Name="EnrollmentDate"
ParameterName="EnrollmentDate" />
<ScalarProperty Name="HireDate" ParameterName="HireDate" />
<ScalarProperty Name="FirstName" ParameterName="FirstName" />
<ScalarProperty Name="LastName" ParameterName="LastName" />
<ResultBinding Name="PersonID" ColumnName="NewPersonID" />
</InsertFunction>
<UpdateFunction FunctionName="SchoolModel.Store.UpdatePerson">
<ScalarProperty Name="EnrollmentDate"
ParameterName="EnrollmentDate"
Version="Current" />
<ScalarProperty Name="HireDate" ParameterName="HireDate"
Version="Current" />
<ScalarProperty Name="FirstName" ParameterName="FirstName"
Version="Current" />
<ScalarProperty Name="LastName" ParameterName="LastName"
Version="Current" />
<ScalarProperty Name="PersonID" ParameterName="PersonID"
Version="Current" />
</UpdateFunction>
<DeleteFunction FunctionName="SchoolModel.Store.DeletePerson">
<ScalarProperty Name="PersonID" ParameterName="PersonID" />
</DeleteFunction>
</ModificationFunctionMapping>
</EntityTypeMapping>
</EntitySetMapping>
Örnek
Aşağıdaki örnekte, School modelinde ayarlanan CourseInstructor ilişkilendirmesi için ilişkilendirme kümesi eşlemesi gösterilmektedir. CourseInstructor ilişkisinin sütun eşlemesine ek olarak, CourseInstructor ilişkisinin ekleme ve silme işlevlerinin eşlemesi de gösterilir. Eşlenen işlevler depolama modelinde bildirilir.
<AssociationSetMapping Name="CourseInstructor"
TypeName="SchoolModel.CourseInstructor"
StoreEntitySet="CourseInstructor">
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
</EndProperty>
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
</EndProperty>
<ModificationFunctionMapping>
<InsertFunction FunctionName="SchoolModel.Store.InsertCourseInstructor" >
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ParameterName="courseId"/>
</EndProperty>
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ParameterName="instructorId"/>
</EndProperty>
</InsertFunction>
<DeleteFunction FunctionName="SchoolModel.Store.DeleteCourseInstructor">
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ParameterName="courseId"/>
</EndProperty>
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ParameterName="instructorId"/>
</EndProperty>
</DeleteFunction>
</ModificationFunctionMapping>
</AssociationSetMapping>
QueryView Öğesi (MSL)
Eşleme belirtimi dilindeki (MSL) QueryView öğesi, kavramsal modeldeki bir varlık türü veya ilişkilendirme ile temel alınan veritabanındaki bir tablo arasında salt okunur eşleme tanımlar. Eşleme, depolama modeline göre değerlendirilen bir Entity SQL sorgusuyla tanımlanır ve sonuç kümesini kavramsal modeldeki bir varlık veya ilişkilendirme açısından ifade edersiniz. Sorgu görünümleri salt okunur olduğundan, sorgu görünümleri tarafından tanımlanan türleri güncelleştirmek için standart güncelleştirme komutlarını kullanamazsınız. Değişiklik işlevlerini kullanarak bu türlerde güncelleştirmeler yapabilirsiniz. Daha fazla bilgi için bkz. Nasıl yapılır: Değişiklik İşlevlerini Saklı Yordamlarla Eşleme.
Dekont
QueryView öğesinde GroupBy, grup toplamaları veya gezinti özellikleri içeren Varlık SQL ifadeleri desteklenmez.
QueryView öğesi EntitySetMapping öğesinin veya AssociationSetMapping öğesinin alt öğesi olabilir. Önceki örnekte sorgu görünümü kavramsal modeldeki bir varlık için salt okunur eşleme tanımlar. İkinci durumda, sorgu görünümü kavramsal modeldeki bir ilişkilendirme için salt okunur eşleme tanımlar.
Dekont
AssociationSetMapping öğesi bilgi kısıtlaması olan bir ilişkilendirmeye yönelikse, AssociationSetMapping öğesi yoksayılır. Daha fazla bilgi için bkz. ReferentialConstraint Öğesi (CSDL).
QueryView öğesinin alt öğeleri olamaz.
Geçerli Öznitelikler
Aşağıdaki tabloda QueryView öğesine uygulanabilecek öznitelikler açıklanmaktadır.
Öznitelik Adı | Gerekli | Değer |
---|---|---|
Typename | Hayır | Sorgu görünümü tarafından eşlenen kavramsal model türünün adı. |
Örnek
Aşağıdaki örnek, QueryView öğesini EntitySetMapping öğesinin alt öğesi olarak gösterir ve Okul Modeli'ndeki Departman varlık türü için bir sorgu görünümü eşlemesi tanımlar.
<EntitySetMapping Name="Departments" >
<QueryView>
SELECT VALUE SchoolModel.Department(d.DepartmentID,
d.Name,
d.Budget,
d.StartDate)
FROM SchoolModelStoreContainer.Department AS d
WHERE d.Budget > 150000
</QueryView>
</EntitySetMapping>
Sorgu, depolama modelindeki Departman türünün üyelerinin yalnızca bir alt kümesini döndürdüğünden, Okul modelindeki Bölüm türü aşağıdaki eşlemeye göre değiştirilmiştir:
<EntityType Name="Department">
<Key>
<PropertyRef Name="DepartmentID" />
</Key>
<Property Type="Int32" Name="DepartmentID" Nullable="false" />
<Property Type="String" Name="Name" Nullable="false"
MaxLength="50" FixedLength="false" Unicode="true" />
<Property Type="Decimal" Name="Budget" Nullable="false"
Precision="19" Scale="4" />
<Property Type="DateTime" Name="StartDate" Nullable="false" />
<NavigationProperty Name="Courses"
Relationship="SchoolModel.FK_Course_Department"
FromRole="Department" ToRole="Course" />
</EntityType>
Örnek
Sonraki örnek, Bir AssociationSetMapping öğesinin alt öğesi olarak QueryView öğesini gösterir ve School modelindeki ilişkilendirme için FK_Course_Department
salt okunur eşleme tanımlar.
<EntityContainerMapping StorageEntityContainer="SchoolModelStoreContainer"
CdmEntityContainer="SchoolEntities">
<EntitySetMapping Name="Courses" >
<QueryView>
SELECT VALUE SchoolModel.Course(c.CourseID,
c.Title,
c.Credits)
FROM SchoolModelStoreContainer.Course AS c
</QueryView>
</EntitySetMapping>
<EntitySetMapping Name="Departments" >
<QueryView>
SELECT VALUE SchoolModel.Department(d.DepartmentID,
d.Name,
d.Budget,
d.StartDate)
FROM SchoolModelStoreContainer.Department AS d
WHERE d.Budget > 150000
</QueryView>
</EntitySetMapping>
<AssociationSetMapping Name="FK_Course_Department" >
<QueryView>
SELECT VALUE SchoolModel.FK_Course_Department(
CREATEREF(SchoolEntities.Departments, row(c.DepartmentID), SchoolModel.Department),
CREATEREF(SchoolEntities.Courses, row(c.CourseID)) )
FROM SchoolModelStoreContainer.Course AS c
</QueryView>
</AssociationSetMapping>
</EntityContainerMapping>
Açıklamalar
Aşağıdaki senaryoları etkinleştirmek için sorgu görünümleri tanımlayabilirsiniz:
- Kavramsal modelde, depolama modelindeki varlığın tüm özelliklerini içermeyen bir varlık tanımlayın. Bu, varsayılan değerleri olmayan ve null değerleri desteklemeyen özellikleri içerir.
- Depolama modelindeki hesaplanan sütunları kavramsal modeldeki varlık türlerinin özellikleriyle eşleyin.
- Kavramsal modeldeki varlıkları bölümlendirmek için kullanılan koşulların eşitliği temel almadığı bir eşleme tanımlayın. Koşul öğesini kullanarak bir koşullu eşleme belirttiğinizde, sağlanan koşulun belirtilen değere eşit olması gerekir. Daha fazla bilgi için bkz. Koşul Öğesi (MSL).
- Depolama modelindeki aynı sütunu kavramsal modeldeki birden çok türle eşleyin.
- Birden çok türü aynı tabloya eşleyin.
- Kavramsal modelde ilişkisel şemadaki yabancı anahtarlara dayalı olmayan ilişkilendirmeler tanımlayın.
- Kavramsal modeldeki özelliklerin değerini ayarlamak için özel iş mantığı kullanın. Örneğin, veri kaynağındaki "T" dize değerini kavramsal modeldeki true(Boole) değeriyle eşleyebilirsiniz.
- Sorgu sonuçları için koşullu filtreler tanımlayın.
- Kavramsal modeldeki verilerde depolama modeline göre daha az kısıtlama uygulayın. Örneğin, eşlendiği sütun null değerleri desteklemese bile kavramsal modeldeki bir özelliği nullyapılabilir hale getirebilirsiniz.
Varlıklar için sorgu görünümlerini tanımlarken aşağıdaki noktalar geçerlidir:
- Sorgu görünümleri salt okunur durumdadır. Varlıklarda yalnızca değişiklik işlevlerini kullanarak güncelleştirmeler yapabilirsiniz.
- Bir varlık türünü sorgu görünümüne göre tanımlarken, tüm ilgili varlıkları sorgu görünümlerine göre de tanımlamanız gerekir.
- İlişkisel şemadaki bir bağlantı tablosunu temsil eden depolama modelindeki bir varlığa çoka çok ilişkisini eşlerseniz, bu bağlantı tablosunun AssociationSetMapping öğesinde bir QueryView öğesi tanımlamanız gerekir.
- Bir tür hiyerarşisindeki tüm türler için sorgu görünümleri tanımlanmalıdır. Bunu şu şekillerde yapabilirsiniz:
-
- Hiyerarşideki tüm varlık türlerinin birleşimini döndüren tek bir Entity SQL sorgusu belirten tek bir QueryView öğesiyle.
- Hiyerarşideki belirli bir varlık türünü belirli bir koşula göre döndürmek için CASE işlecini kullanan tek bir Entity SQL sorgusu belirten tek bir QueryView öğesiyle.
- Hiyerarşideki belirli bir tür için ek bir QueryView öğesi ile. Bu durumda, her görünümün varlık türünü belirtmek için QueryView öğesinin TypeName özniteliğini kullanın.
- Sorgu görünümü tanımlandığında, EntitySetMapping öğesinde Depolama SetName özniteliğini belirtemezsiniz.
- Sorgu görünümü tanımlandığında EntitySetMapping öğesi de Özellik eşlemeleri içeremez.
ResultBinding Öğesi (MSL)
Eşleme belirtimi dilindeki (MSL) ResultBinding öğesi, varlık türü değişiklik işlevleri temel alınan veritabanındaki saklı yordamlarla eşlendiğinde saklı yordamlar tarafından döndürülen sütun değerlerini kavramsal modeldeki varlık özellikleriyle eşler. Örneğin, bir kimlik sütununun değeri bir insert saklı yordamı tarafından döndürülürse ResultBinding öğesi döndürülen değeri kavramsal modeldeki bir varlık türü özelliğiyle eşler.
ResultBinding öğesi InsertFunction öğesinin veya UpdateFunction öğesinin alt öğesi olabilir.
ResultBinding öğesi herhangi bir alt öğeye sahip olamaz.
Geçerli Öznitelikler
Aşağıdaki tabloda ResultBinding öğesi için geçerli olan öznitelikler açıklanmaktadır:
Öznitelik Adı | Gerekli | Değer |
---|---|---|
Ad | Evet | Eşlenen kavramsal modeldeki varlık özelliğinin adı. |
Columnname | Evet | Eşlenen sütunun adı. |
Örnek
Aşağıdaki örnek School modelini temel alır ve Kişi varlık türünün insert işlevini InsertPerson saklı yordamına eşlemek için kullanılan InsertFunction öğesini gösterir. (InsertPerson saklı yordamı aşağıda gösterilir ve depolama modelinde bildirilir.) ResultBinding öğesi, saklı yordam (NewPersonID) tarafından döndürülen bir sütun değerini bir varlık türü özelliğine (PersonID) eşlemek için kullanılır.
<EntityTypeMapping TypeName="SchoolModel.Person">
<ModificationFunctionMapping>
<InsertFunction FunctionName="SchoolModel.Store.InsertPerson">
<ScalarProperty Name="EnrollmentDate"
ParameterName="EnrollmentDate" />
<ScalarProperty Name="HireDate" ParameterName="HireDate" />
<ScalarProperty Name="FirstName" ParameterName="FirstName" />
<ScalarProperty Name="LastName" ParameterName="LastName" />
<ResultBinding Name="PersonID" ColumnName="NewPersonID" />
</InsertFunction>
<UpdateFunction FunctionName="SchoolModel.Store.UpdatePerson">
<ScalarProperty Name="EnrollmentDate"
ParameterName="EnrollmentDate"
Version="Current" />
<ScalarProperty Name="HireDate" ParameterName="HireDate"
Version="Current" />
<ScalarProperty Name="FirstName" ParameterName="FirstName"
Version="Current" />
<ScalarProperty Name="LastName" ParameterName="LastName"
Version="Current" />
<ScalarProperty Name="PersonID" ParameterName="PersonID"
Version="Current" />
</UpdateFunction>
<DeleteFunction FunctionName="SchoolModel.Store.DeletePerson">
<ScalarProperty Name="PersonID" ParameterName="PersonID" />
</DeleteFunction>
</ModificationFunctionMapping>
</EntityTypeMapping>
Aşağıdaki Transact-SQL, InsertPerson saklı yordamını açıklar:
CREATE PROCEDURE [dbo].[InsertPerson]
@LastName nvarchar(50),
@FirstName nvarchar(50),
@HireDate datetime,
@EnrollmentDate datetime
AS
INSERT INTO dbo.Person (LastName,
FirstName,
HireDate,
EnrollmentDate)
VALUES (@LastName,
@FirstName,
@HireDate,
@EnrollmentDate);
SELECT SCOPE_IDENTITY() as NewPersonID;
ResultMapping Öğesi (MSL)
Eşleme belirtimi dilindeki (MSL) ResultMapping öğesi, kavramsal modeldeki bir işlev içeri aktarması ile aşağıdakiler doğru olduğunda temel alınan veritabanındaki saklı yordam arasındaki eşlemeyi tanımlar:
- İşlev içeri aktarma işlemi kavramsal model varlık türünü veya karmaşık türü döndürür.
- Saklı yordam tarafından döndürülen sütunların adları, varlık türü veya karmaşık türdeki özelliklerin adlarla tam olarak eşleşmez.
Varsayılan olarak, saklı yordam tarafından döndürülen sütunlar ile varlık türü veya karmaşık tür arasındaki eşleme, sütun ve özellik adlarını temel alır. Sütun adları özellik adlarına tam olarak uymuyorsa, eşlemeyi tanımlamak için ResultMapping öğesini kullanmanız gerekir. Varsayılan eşleme örneği için bkz. FunctionImportMapping Öğesi (MSL).
ResultMapping öğesi FunctionImportMapping öğesinin alt öğesidir.
ResultMapping öğesi aşağıdaki alt öğelere sahip olabilir:
- EntityTypeMapping (sıfır veya daha fazla)
- ComplexTypeMapping
ResultMapping Öğesi için hiçbir öznitelik geçerli değildir.
Örnek
Aşağıdaki saklı yordamı göz önünde bulundurun:
CREATE PROCEDURE [dbo].[GetGrades]
@student_Id int
AS
SELECT EnrollmentID as enroll_id,
Grade as grade,
CourseID as course_id,
StudentID as student_id
FROM dbo.StudentGrade
WHERE StudentID = @student_Id
Ayrıca aşağıdaki kavramsal model varlık türünü de göz önünde bulundurun:
<EntityType Name="StudentGrade">
<Key>
<PropertyRef Name="EnrollmentID" />
</Key>
<Property Name="EnrollmentID" Type="Int32" Nullable="false"
annotation:StoreGeneratedPattern="Identity" />
<Property Name="CourseID" Type="Int32" Nullable="false" />
<Property Name="StudentID" Type="Int32" Nullable="false" />
<Property Name="Grade" Type="Decimal" Precision="3" Scale="2" />
</EntityType>
Önceki varlık türünün örneklerini döndüren bir işlev içeri aktarması oluşturmak için saklı yordam tarafından döndürülen sütunlar ile varlık türü arasındaki eşleme bir ResultMapping öğesinde tanımlanmalıdır:
<FunctionImportMapping FunctionImportName="GetGrades"
FunctionName="SchoolModel.Store.GetGrades" >
<ResultMapping>
<EntityTypeMapping TypeName="SchoolModel.StudentGrade">
<ScalarProperty Name="EnrollmentID" ColumnName="enroll_id"/>
<ScalarProperty Name="CourseID" ColumnName="course_id"/>
<ScalarProperty Name="StudentID" ColumnName="student_id"/>
<ScalarProperty Name="Grade" ColumnName="grade"/>
</EntityTypeMapping>
</ResultMapping>
</FunctionImportMapping>
ScalarProperty Öğesi (MSL)
Eşleme belirtimi dilindeki (MSL) ScalarProperty öğesi, kavramsal model varlık türü, karmaşık türü veya ilişkisindeki bir özelliği temel alınan veritabanındaki bir tablo sütununa veya saklı yordam parametresine eşler.
Dekont
Değişiklik işlevlerinin eşlendiği saklı yordamların depolama modelinde bildirilmesi gerekir. Daha fazla bilgi için bkz. İşlev Öğesi (SSDL).
ScalarProperty öğesi aşağıdaki öğelerin alt öğesi olabilir:
- MappingFragment
- InsertFunction
- UpdateFunction
- DeleteFunction
- EndProperty
- Complexproperty
- ResultMapping
MappingFragment, ComplexProperty veya EndProperty öğesinin alt öğesi olarak, ScalarProperty öğesi kavramsal modeldeki bir özelliği veritabanındaki bir sütunla eşler. InsertFunction, UpdateFunction veya DeleteFunction öğesinin alt öğesi olarak, ScalarProperty öğesi kavramsal modeldeki bir özelliği saklı yordam parametresiyle eşler.
ScalarProperty öğesinin alt öğesi olamaz.
Geçerli Öznitelikler
ScalarProperty öğesine uygulanan öznitelikler, öğenin rolüne bağlı olarak farklılık gösterir.
Aşağıdaki tabloda, kavramsal model özelliğini veritabanındaki bir sütuna eşlemek için ScalarProperty öğesi kullanıldığında geçerli olan öznitelikler açıklanmaktadır:
Öznitelik Adı | Gerekli | Değer |
---|---|---|
Ad | Evet | Eşlenen kavramsal model özelliğinin adı. |
Columnname | Evet | Eşlenen tablo sütununun adı. |
Aşağıdaki tabloda, kavramsal model özelliğini saklı yordam parametresiyle eşlemek için kullanıldığında ScalarProperty öğesi için geçerli olan öznitelikler açıklanmaktadır:
Öznitelik Adı | Gerekli | Değer |
---|---|---|
Ad | Evet | Eşlenen kavramsal model özelliğinin adı. |
Parametername | Evet | Eşlenen parametrenin adı. |
Sürüm | Hayır | Geçerli değerin veya özelliğin özgün değerinin eşzamanlılık denetimleri için kullanılması gerekip gerekmediğine bağlı olarak Geçerli veya Özgün . |
Örnek
Aşağıdaki örnekte iki şekilde kullanılan ScalarProperty öğesi gösterilmektedir:
- Kişi varlık türünün özelliklerini Kişi tablosunun sütunlarına eşlemek için.
- Kişi varlık türünün özelliklerini UpdatePerson saklı yordamının parametreleriyle eşlemek için. Saklı yordamlar depolama modelinde bildirilir.
<EntitySetMapping Name="People">
<EntityTypeMapping TypeName="SchoolModel.Person">
<MappingFragment StoreEntitySet="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
<ScalarProperty Name="LastName" ColumnName="LastName" />
<ScalarProperty Name="FirstName" ColumnName="FirstName" />
<ScalarProperty Name="HireDate" ColumnName="HireDate" />
<ScalarProperty Name="EnrollmentDate"
ColumnName="EnrollmentDate" />
</MappingFragment>
</EntityTypeMapping>
<EntityTypeMapping TypeName="SchoolModel.Person">
<ModificationFunctionMapping>
<InsertFunction FunctionName="SchoolModel.Store.InsertPerson">
<ScalarProperty Name="EnrollmentDate"
ParameterName="EnrollmentDate" />
<ScalarProperty Name="HireDate" ParameterName="HireDate" />
<ScalarProperty Name="FirstName" ParameterName="FirstName" />
<ScalarProperty Name="LastName" ParameterName="LastName" />
<ResultBinding Name="PersonID" ColumnName="NewPersonID" />
</InsertFunction>
<UpdateFunction FunctionName="SchoolModel.Store.UpdatePerson">
<ScalarProperty Name="EnrollmentDate"
ParameterName="EnrollmentDate"
Version="Current" />
<ScalarProperty Name="HireDate" ParameterName="HireDate"
Version="Current" />
<ScalarProperty Name="FirstName" ParameterName="FirstName"
Version="Current" />
<ScalarProperty Name="LastName" ParameterName="LastName"
Version="Current" />
<ScalarProperty Name="PersonID" ParameterName="PersonID"
Version="Current" />
</UpdateFunction>
<DeleteFunction FunctionName="SchoolModel.Store.DeletePerson">
<ScalarProperty Name="PersonID" ParameterName="PersonID" />
</DeleteFunction>
</ModificationFunctionMapping>
</EntityTypeMapping>
</EntitySetMapping>
Örnek
Sonraki örnekte, kavramsal model ilişkisinin ekleme ve silme işlevlerini veritabanındaki saklı yordamlarla eşlemek için kullanılan ScalarProperty öğesi gösterilmektedir. Saklı yordamlar depolama modelinde bildirilir.
<AssociationSetMapping Name="CourseInstructor"
TypeName="SchoolModel.CourseInstructor"
StoreEntitySet="CourseInstructor">
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
</EndProperty>
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
</EndProperty>
<ModificationFunctionMapping>
<InsertFunction FunctionName="SchoolModel.Store.InsertCourseInstructor" >
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ParameterName="courseId"/>
</EndProperty>
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ParameterName="instructorId"/>
</EndProperty>
</InsertFunction>
<DeleteFunction FunctionName="SchoolModel.Store.DeleteCourseInstructor">
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ParameterName="courseId"/>
</EndProperty>
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ParameterName="instructorId"/>
</EndProperty>
</DeleteFunction>
</ModificationFunctionMapping>
</AssociationSetMapping>
UpdateFunction Öğesi (MSL)
Eşleme belirtimi dilindeki (MSL) UpdateFunction öğesi, kavramsal modeldeki bir varlık türünün güncelleştirme işlevini temel alınan veritabanındaki saklı yordamla eşler. Değişiklik işlevlerinin eşlendiği saklı yordamların depolama modelinde bildirilmesi gerekir. Daha fazla bilgi için bkz. İşlev Öğesi (SSDL).
Dekont
Varlık türünün ekleme, güncelleştirme veya silme işlemlerinin üçünü de saklı yordamlarla eşlemezseniz, eşlenmemiş işlemler çalışma zamanında yürütülürse ve bir UpdateException oluşturulursa başarısız olur.
UpdateFunction öğesi ModificationFunctionMapping öğesinin alt öğesi olabilir ve EntityTypeMapping öğesine uygulanabilir.
UpdateFunction öğesi aşağıdaki alt öğelere sahip olabilir:
- AssociationEnd (sıfır veya daha fazla)
- ComplexProperty (sıfır veya daha fazla)
- ResultBinding (sıfır veya bir)
- ScalarProperty (sıfır veya daha fazla)
Geçerli Öznitelikler
Aşağıdaki tabloda UpdateFunction öğesine uygulanabilecek öznitelikler açıklanmaktadır.
Öznitelik Adı | Gerekli | Değer |
---|---|---|
İşlevAdı | Evet | Güncelleştirme işlevinin eşlendiği saklı yordamın ad alanı nitelenmiş adı. Saklı yordam, depolama modelinde bildirilmelidir. |
RowsAffectedParameter | Hayır | Etkilenen satır sayısını döndüren çıkış parametresinin adı. |
Örnek
Aşağıdaki örnek, Okul modelini temel alır ve Kişi varlık türünün update işlevini UpdatePerson saklı yordamıyla eşlemek için kullanılan UpdateFunction öğesini gösterir. UpdatePerson saklı yordamı depolama modelinde bildirilir.
<EntityTypeMapping TypeName="SchoolModel.Person">
<ModificationFunctionMapping>
<InsertFunction FunctionName="SchoolModel.Store.InsertPerson">
<ScalarProperty Name="EnrollmentDate"
ParameterName="EnrollmentDate" />
<ScalarProperty Name="HireDate" ParameterName="HireDate" />
<ScalarProperty Name="FirstName" ParameterName="FirstName" />
<ScalarProperty Name="LastName" ParameterName="LastName" />
<ResultBinding Name="PersonID" ColumnName="NewPersonID" />
</InsertFunction>
<UpdateFunction FunctionName="SchoolModel.Store.UpdatePerson">
<ScalarProperty Name="EnrollmentDate"
ParameterName="EnrollmentDate"
Version="Current" />
<ScalarProperty Name="HireDate" ParameterName="HireDate"
Version="Current" />
<ScalarProperty Name="FirstName" ParameterName="FirstName"
Version="Current" />
<ScalarProperty Name="LastName" ParameterName="LastName"
Version="Current" />
<ScalarProperty Name="PersonID" ParameterName="PersonID"
Version="Current" />
</UpdateFunction>
<DeleteFunction FunctionName="SchoolModel.Store.DeletePerson">
<ScalarProperty Name="PersonID" ParameterName="PersonID" />
</DeleteFunction>
</ModificationFunctionMapping>
</EntityTypeMapping>
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin