Skip to content

Commit 5101705

Browse files
committed
Merge pull request #265 from Micha-kun/master
sql-insert, sql-update, sql-delete into join
2 parents 6c5429d + 95f41f3 commit 5101705

File tree

4 files changed

+39
-0
lines changed

4 files changed

+39
-0
lines changed

src/FluentNHibernate.Testing/DomainModel/Mapping/JoinPartTester.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,30 @@ public void JoinIsAlwaysLastInTheClassElement()
101101
.Element("class/*[last()]").HasName("join");
102102
}
103103

104+
[Test]
105+
public void JoinContainsAnSqlInsertElement()
106+
{
107+
new MappingTester<JoinTarget>()
108+
.ForMapping(m => m.Join("myTable", t => t.SqlInsert("INSERT INTO myTable VALUES(?)"))) // Now it's not important whether statement is correct or not.
109+
.Element("class/join/sql-insert").Exists();
110+
}
111+
112+
[Test]
113+
public void JoinContainsAnSqlUpdateElement()
114+
{
115+
new MappingTester<JoinTarget>()
116+
.ForMapping(m => m.Join("myTable", t => t.SqlUpdate("UPDATE myTable SET Name = ? WHERE Id = ?"))) // Now it's not important whether statement is correct or not.
117+
.Element("class/join/sql-update").Exists();
118+
}
119+
120+
[Test]
121+
public void JoinContainsAnSqlDeleteElement()
122+
{
123+
new MappingTester<JoinTarget>()
124+
.ForMapping(m => m.Join("myTable", t => t.SqlDelete("DELETE FROM myTable WHERE Id = ?"))) // Now it's not important whether statement is correct or not.
125+
.Element("class/join/sql-delete").Exists();
126+
}
127+
104128
private class JoinTarget
105129
{
106130
public string Name { get; set; }

src/FluentNHibernate/Mapping/JoinPart.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,9 @@ JoinMapping IJoinMappingProvider.GetJoinMapping()
171171
foreach (var collection in providers.Collections)
172172
mapping.AddCollection(collection.GetCollectionMapping());
173173

174+
foreach (var storedProcedure in providers.StoredProcedures)
175+
mapping.AddStoredProcedure(storedProcedure.GetStoredProcedureMapping());
176+
174177
return mapping;
175178
}
176179
}

src/FluentNHibernate/MappingModel/JoinMapping.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,11 @@ public void AddCollection(CollectionMapping collectionMapping)
8080
mappedMembers.AddCollection(collectionMapping);
8181
}
8282

83+
public void AddStoredProcedure(StoredProcedureMapping storedProcedureMapping)
84+
{
85+
mappedMembers.AddStoredProcedure(storedProcedureMapping);
86+
}
87+
8388
public string TableName
8489
{
8590
get { return attributes.GetOrDefault<string>("TableName"); }

src/FluentNHibernate/MappingModel/Output/XmlJoinWriter.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,5 +98,12 @@ public override void Visit(CollectionMapping mapping)
9898

9999
document.ImportAndAppendChild(xml);
100100
}
101+
102+
public override void Visit(StoredProcedureMapping mapping)
103+
{
104+
var writer = serviceLocator.GetWriter<StoredProcedureMapping>();
105+
var xml = writer.Write(mapping);
106+
document.ImportAndAppendChild(xml);
107+
}
101108
}
102109
}

0 commit comments

Comments
 (0)