diff --git a/TopModel.Core/ModelErrorType.cs b/TopModel.Core/ModelErrorType.cs
index f7d45316..e090a0e7 100644
--- a/TopModel.Core/ModelErrorType.cs
+++ b/TopModel.Core/ModelErrorType.cs
@@ -182,6 +182,11 @@ public enum ModelErrorType
///
TMD1028,
+ ///
+ /// Cette association sur la classe '{classe}' doit définir un rôle.
+ ///
+ TMD1029,
+
///
/// Le flux de données est introuvable dans le fichier ou l'une de ses références.
///
diff --git a/TopModel.Core/ModelStore.cs b/TopModel.Core/ModelStore.cs
index a643d85c..2bd14239 100644
--- a/TopModel.Core/ModelStore.cs
+++ b/TopModel.Core/ModelStore.cs
@@ -1416,6 +1416,15 @@ IEnumerable ResolveAliases(IEnumerable alps)
ModelErrorType = ModelErrorType.TMD0003
};
}
+
+ foreach (var property in classe.Properties.OfType().Where(p => p.Association == classe && string.IsNullOrEmpty(p.Role)))
+ {
+ yield return new ModelError(modelFile, $"Cette association sur la classe '{classe}' doit définir un rôle.", property.Decorator is not null ? classe.DecoratorReferences.FirstOrDefault(dr => dr.ReferenceName == property.Decorator.Name) : property.GetLocation())
+ {
+ IsError = true,
+ ModelErrorType = ModelErrorType.TMD1029
+ };
+ }
}
foreach (var use in modelFile.UselessImports.Where(u => dependencies.Any(d => d.Name == u.ReferenceName)))