1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
namespace System.Data.Entity.Edm
{
using System.Data.Entity.Core.Metadata.Edm;
using System.Data.Entity.Edm.Validation;
using System.Data.Entity.ModelConfiguration.Edm;
using System.Data.Entity.Resources;
using System.Linq;
using Xunit;
public class EdmModelSemanticValidationRulesTests
{
[Fact]
public void EdmNavigationProperty_BadNavigationPropertyBadFromRoleType()
{
var parentEntity = new EntityType("P", "N", DataSpace.CSpace);
var targetEntity = new EntityType("T", "N", DataSpace.CSpace);
var sourceEntity = new EntityType("S", "N", DataSpace.CSpace);
var associationType
= new AssociationType
{
SourceEnd = new AssociationEndMember("S", sourceEntity),
TargetEnd = new AssociationEndMember("T", targetEntity)
};
var navigationProperty
= new NavigationProperty("N", TypeUsage.Create(targetEntity))
{
RelationshipType = associationType
};
parentEntity.AddMember(navigationProperty);
var model = new EdmModel(DataSpace.CSpace);
model.AddItem(parentEntity);
var validationContext
= new EdmModelValidationContext(model, true);
DataModelErrorEventArgs errorEventArgs = null;
validationContext.OnError += (_, e) => errorEventArgs = e;
EdmModelSemanticValidationRules
.EdmNavigationProperty_BadNavigationPropertyBadFromRoleType
.Evaluate(validationContext, navigationProperty);
Assert.NotNull(errorEventArgs);
Assert.Same(navigationProperty, errorEventArgs.Item);
Assert.Equal(
Strings.BadNavigationPropertyBadFromRoleType(
navigationProperty.Name,
sourceEntity.Name,
navigationProperty.GetFromEnd().Name,
navigationProperty.Association.Name,
parentEntity.Name),
errorEventArgs.ErrorMessage);
}
[Fact]
public void EdmEntityContainer_DuplicateEntitySetTable()
{
var model = new EdmModel(DataSpace.SSpace);
model.Containers.Single().AddEntitySetBase(
new EntitySet("Foo", "S", "T", null, new EntityType()));
var duplicateEntitySet = new EntitySet("Bar", "S", "T", null, new EntityType());
model.Containers.Single().AddEntitySetBase(duplicateEntitySet);
var validationContext
= new EdmModelValidationContext(model, true);
DataModelErrorEventArgs errorEventArgs = null;
validationContext.OnError += (_, e) => errorEventArgs = e;
EdmModelSemanticValidationRules
.EdmEntityContainer_DuplicateEntitySetTable
.Evaluate(validationContext, model.Containers.Single());
Assert.NotNull(errorEventArgs);
Assert.Same(duplicateEntitySet, errorEventArgs.Item);
Assert.Equal(
Strings.DuplicateEntitySetTable(
duplicateEntitySet.Name,
duplicateEntitySet.Schema,
duplicateEntitySet.Table),
errorEventArgs.ErrorMessage);
}
}
}
|