diff --git a/src/Umbraco.Core/Models/Content.cs b/src/Umbraco.Core/Models/Content.cs
index 60d20ccf35..4dbde74b63 100644
--- a/src/Umbraco.Core/Models/Content.cs
+++ b/src/Umbraco.Core/Models/Content.cs
@@ -36,6 +36,8 @@ namespace Umbraco.Core.Models
/// Collection of properties
public Content(int parentId, IContentType contentType, PropertyCollection properties) : base(parentId, contentType, properties)
{
+ Mandate.ParameterNotNull(contentType, "contentType");
+
_contentType = contentType;
}
diff --git a/src/Umbraco.Core/Models/ContentBase.cs b/src/Umbraco.Core/Models/ContentBase.cs
index 43dcf69768..1f61bce6cd 100644
--- a/src/Umbraco.Core/Models/ContentBase.cs
+++ b/src/Umbraco.Core/Models/ContentBase.cs
@@ -27,6 +27,10 @@ namespace Umbraco.Core.Models
protected ContentBase(int parentId, IContentTypeComposition contentType, PropertyCollection properties)
{
+ Mandate.ParameterCondition(parentId != 0, "parentId");
+ Mandate.ParameterNotNull(contentType, "contentType");
+ Mandate.ParameterNotNull(properties, "properties");
+
_parentId = parentId;
_contentTypeId = int.Parse(contentType.Id.ToString(CultureInfo.InvariantCulture));
ContentTypeBase = contentType;
diff --git a/src/Umbraco.Core/Persistence/PetaPocoExtensions.cs b/src/Umbraco.Core/Persistence/PetaPocoExtensions.cs
index e13aa756bc..0a76fbbff5 100644
--- a/src/Umbraco.Core/Persistence/PetaPocoExtensions.cs
+++ b/src/Umbraco.Core/Persistence/PetaPocoExtensions.cs
@@ -35,6 +35,7 @@ namespace Umbraco.Core.Persistence
var foreignSql = SyntaxConfig.SqlSyntaxProvider.ToCreateForeignKeyStatements(tableDefinition);
var indexSql = SyntaxConfig.SqlSyntaxProvider.ToCreateIndexStatements(tableDefinition);
+ /*
#if DEBUG
Console.WriteLine(createSql);
Console.WriteLine(createPrimaryKeySql);
@@ -47,6 +48,7 @@ namespace Umbraco.Core.Persistence
Console.WriteLine(sql);
}
#endif
+ */
var tableExist = db.TableExist(tableName);
if (overwrite && tableExist)
diff --git a/src/Umbraco.Core/Persistence/Repositories/RepositoryBase.cs b/src/Umbraco.Core/Persistence/Repositories/RepositoryBase.cs
index 294bbbdbaa..4b1cda10c4 100644
--- a/src/Umbraco.Core/Persistence/Repositories/RepositoryBase.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/RepositoryBase.cs
@@ -38,6 +38,14 @@ namespace Umbraco.Core.Persistence.Repositories
get { return _work; }
}
+ ///
+ /// Internal for testing purposes
+ ///
+ internal Guid UnitKey
+ {
+ get { return (Guid)_work.Key; }
+ }
+
#region IRepository Members
///
diff --git a/src/Umbraco.Core/Persistence/RepositoryResolver.cs b/src/Umbraco.Core/Persistence/RepositoryResolver.cs
index 5921b90d72..50bd73dfd3 100644
--- a/src/Umbraco.Core/Persistence/RepositoryResolver.cs
+++ b/src/Umbraco.Core/Persistence/RepositoryResolver.cs
@@ -36,7 +36,7 @@ namespace Umbraco.Core.Persistence
if (Repositories.ContainsKey(interfaceShortName))
{
repository = (TRepository)Repositories[interfaceShortName];
- if (unitOfWork != null && repository.GetType().IsSubclassOf(typeof(IRepository)))
+ if (unitOfWork != null && (typeof(IRepository).IsInstanceOfType(repository)))
{
repository.SetUnitOfWork(unitOfWork);
}
diff --git a/src/Umbraco.Tests/Persistence/RepositoryResolverTests.cs b/src/Umbraco.Tests/Persistence/RepositoryResolverTests.cs
index 5666b0a551..917f8769c8 100644
--- a/src/Umbraco.Tests/Persistence/RepositoryResolverTests.cs
+++ b/src/Umbraco.Tests/Persistence/RepositoryResolverTests.cs
@@ -190,5 +190,37 @@ namespace Umbraco.Tests.Persistence
// Assert
Assert.That(repository, Is.Not.Null);
}
+
+ [Test]
+ public void Can_Verify_UOW_In_Repository()
+ {
+ // Arrange
+ var uow = new PetaPocoUnitOfWork();
+
+ // Act
+ var repository = RepositoryResolver.ResolveByType(uow);
+
+ // Assert
+ Assert.That(repository, Is.Not.Null);
+ Assert.That(uow.Key, Is.EqualTo(((RepositoryBase)repository).UnitKey));
+ }
+
+ [Test]
+ public void Type_Checking()
+ {
+ var repositoryType = typeof (IContentRepository);
+ bool isSubclassOf = repositoryType.IsSubclassOf(typeof(IRepository));
+ bool isAssignableFrom = typeof(IRepository).IsAssignableFrom(repositoryType);
+
+ Assert.That(isSubclassOf, Is.False);
+ Assert.That(isAssignableFrom, Is.True);
+
+ var uow = new PetaPocoUnitOfWork();
+ var repository = RepositoryResolver.ResolveByType(uow);
+ bool subclassOf = repository.GetType().IsSubclassOf(typeof (IRepository));
+
+ Assert.That(subclassOf, Is.False);
+ Assert.That((typeof(IRepository).IsInstanceOfType(repository)), Is.True);
+ }
}
}
\ No newline at end of file