annotate Source/Mapping/Association.cs @ 5:f7d63a092920

Исправлено условие Where в тех случаях, когда репозитарий не является генериком
author cin
date Tue, 10 Mar 2015 16:02:11 +0300
parents f990fcb411a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using JNotNull = JetBrains.Annotations.NotNullAttribute;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 namespace BLToolkit.Mapping
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 using Common;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 using Reflection;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 public class Association
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 public Association(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 [JNotNull] MemberAccessor memberAccessor,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 [JNotNull] string[] thisKey,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 [JNotNull] string[] otherKey,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 string storage,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 bool canBeNull)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 if (memberAccessor == null) throw new ArgumentNullException("memberAccessor");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 if (thisKey == null) throw new ArgumentNullException("thisKey");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 if (otherKey == null) throw new ArgumentNullException("otherKey");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 if (thisKey.Length == 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 throw new ArgumentOutOfRangeException(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 "thisKey",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 string.Format("Association '{0}.{1}' does not define keys.", memberAccessor.TypeAccessor.Type.Name, memberAccessor.Name));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 if (thisKey.Length != otherKey.Length)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 throw new ArgumentException(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 string.Format(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 "Association '{0}.{1}' has different number of keys for parent and child objects.",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 memberAccessor.TypeAccessor.Type.Name, memberAccessor.Name));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 MemberAccessor = memberAccessor;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 ThisKey = thisKey;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 OtherKey = otherKey;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 Storage = storage;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 CanBeNull = canBeNull;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 public MemberAccessor MemberAccessor { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 public string[] ThisKey { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 public string[] OtherKey { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 public string Storage { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 public bool CanBeNull { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 public static string[] ParseKeys(string keys)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 return keys == null ? Array<string>.Empty : keys.Replace(" ", "").Split(',');
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 }