Здравствуйте, Dog, Вы писали:
Dog>а можно как-то в виде ?
можно, от чего же нельзя...
давай рассмотрим все на примере того же теста итак, имеем:
// вот у нас класс, с мапингом, размеченым аттрибутами, обратим внимание на то, что имена полей не совпадают с теми что в БД
public class Person
{
[PrimaryKey]
[MapField("PersonID")] public int ID;
[MapField("FirstName")] public string FName;
[MapField("LastName")] public string LName;
}
[Test]
public void Test()
{
// вот тут мы делаем выборку из БД
Person p = (Person)new SqlQuery().SelectByKey(typeof(Person), 1);
// вот тут проверяем, что отмапилось все верно
Assert.AreEqual(1, p.ID);
Assert.AreEqual("John", p.FName);
Assert.AreEqual("Pupkin", p.LName);
// теперь начинается самое интересное
// 1. создается маппинг схема, новая, зачем, все просто - экстеншены грузятся в схему, где и хранятся
// пользуя для экстеншенов свою схему, мы как-бы не влиеям на дефолтную
MappingSchema map = new MappingSchema();
// 2. вот тут грузятся экстеншены из XML файла
// что интересно - файл может как лежать "рядом" с приложением, так и быть ембеднутым ресурсом
// сам файл приведен чуть ниже
map.Extensions = TypeExtension.GetExtensions("XmlMap.xml");
// вот тут мы мапим объект к ДатаРоу
DataRow dr = map.MapObjectToDataRow(p, new DataTable());
// а вот тут проверяем, что разметка полей _изменилась_ на ту, которую задает экстеншн
Assert.AreEqual(1, dr["PERSON_ID"]);
Assert.AreEqual("John", dr["FIRST_NAME"]);
Assert.AreEqual("Pupkin", dr["LAST_NAME"]);
}
а вот собственно наша XML-ка... тут все прозачно до безобразия, комментировать не буду...
<?xml version="1.0" encoding="utf-8" ?>
<Types>
<Type Name="Person">
<Member Name="ID" MapField="PERSON_ID" />
<Member Name="FName" MapField="FIRST_NAME" />
<Member Name="LName" MapField="LAST_NAME" />
</Type>
</Types>
такой экстеншн эквивалентен вот такой разметке аттрибутами:
public class Person
{
[MapField("PERSON_ID")] public int ID;
[MapField("FIRST_NAME")] public string FName;
[MapField("LAST_NAME")] public string LName;
}
все что можно задать в XML-ке задано 2 схемами:
Mapping.xsd — позволяет задать то, что относится к маппингу, имена полей, типы, значения по умолчанию и прочая шняга, в принцыпе оно там прямо так словами и перечислено, аттрибуты совпадают с аттрибутами полей (простите за тафтологию), разобраться достаточно просто
DataAccess.xsd — тут про датааксесс, тэйбл неймы, примари кеи, нон апдейтаблы
посмотрите в тестах *.xml, думаю, после этой короткой вводной разобраться не составит труда, если что — вэлкам, спрашивйте