Browse Source

Save EDMX: Designer Data is getting saved now

pull/1/head
philippmaihart 15 years ago
parent
commit
a8d5cbb4cc
  1. 6
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core.UI/DisplayBinding/EDMDesignerViewContent.cs
  2. 14
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/IO/CSDLIO.cs
  3. 92
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/IO/DesignerIO.cs
  4. 11
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/IO/EDMXIO.cs
  5. 4
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/IO/SSDLIO.cs

6
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core.UI/DisplayBinding/EDMDesignerViewContent.cs

@ -115,7 +115,9 @@ namespace ICSharpCode.Data.EDMDesigner.Core.UI.DisplayBinding @@ -115,7 +115,9 @@ namespace ICSharpCode.Data.EDMDesigner.Core.UI.DisplayBinding
EntityTypeDesigner.Init = true;
if (edmxElement == null || edmxElement.Element("DesignerViews") == null)
edmxElement = new XElement("Designer", DesignerIO.GenerateNewDesignerViewsFromCSDLView(_edmView.CSDL));
{
edmxElement = new XElement("Designer", DesignerIO.GenerateNewDesignerViewsFromCSDLView(_edmView));
}
if (edmxElement != null && edmxElement.Element("DesignerViews") != null)
DesignerIO.Read(_edmView, edmxElement.Element("DesignerViews"), entityType => new EntityTypeDesigner(entityType), complexType => new ComplexTypeDesigner(complexType));
@ -135,7 +137,7 @@ namespace ICSharpCode.Data.EDMDesigner.Core.UI.DisplayBinding @@ -135,7 +137,7 @@ namespace ICSharpCode.Data.EDMDesigner.Core.UI.DisplayBinding
public override void Save(OpenedFile file, Stream stream)
{
EDMXIO.WriteXDocument(_edmView.EDM).Save(stream);
EDMXIO.WriteXDocument(_edmView).Save(stream);
}
private EDMWizardWindow RunWizard(OpenedFile file)

14
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/IO/CSDLIO.cs

@ -266,7 +266,7 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO @@ -266,7 +266,7 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO
XElement entitySetElement = new XElement(csdlNamespace + "EntitySet",
new XAttribute("Name", entityType.EntitySetName),
new XAttribute("EntityType", string.Concat(entityContainerNamespace, entityType.Name)));
//.AddAttribute(csdlCodeGenerationNamespace, "GetterAccess", entityType.EntitySetVisibility);
//.AddAttribute(csdlCodeGenerationNamespace, "GetterAccess", entityType.EntitySetVisibility); // Not available in EF 4.0
entityContainer.Add(entitySetElement);
}
@ -312,7 +312,7 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO @@ -312,7 +312,7 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO
{
XElement complexTypeElement = new XElement(csdlNamespace + "ComplexType",
new XAttribute("Name", complexType.Name));
//.AddAttribute(new XAttribute(csdlCodeGenerationNamespace + "TypeAccess", complexType.Visibility));
//.AddAttribute(new XAttribute(csdlCodeGenerationNamespace + "TypeAccess", complexType.Visibility)); // Not available in EF 4.0
complexTypeElement.Add(WriteScalarProperties(complexType));
complexTypeElement.Add(WriteComplexProperties(complexType, string.Concat(csdlContainer.Alias, ".")));
@ -325,7 +325,7 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO @@ -325,7 +325,7 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO
{
XElement entityTypeElement = new XElement(csdlNamespace + "EntityType")
.AddAttribute("Name", entityType.Name)
//.AddAttribute(csdlCodeGenerationNamespace, "TypeAccess", entityType.Visibility)
//.AddAttribute(csdlCodeGenerationNamespace, "TypeAccess", entityType.Visibility) // Not available in EF 4.0
.AddAttribute("BaseType", entityType.BaseType == null ? null : string.Concat(entityContainerNamespace, entityType.BaseType.Name))
.AddAttribute("Abstract", entityType.Abstract);
@ -353,7 +353,7 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO @@ -353,7 +353,7 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO
.AddAttribute("Relationship", string.Concat(entityContainerNamespace, navigationProperty.Association.Name))
.AddAttribute("FromRole", navigationProperty.Association.GetRoleName(navigationProperty))
.AddAttribute("ToRole", navigationProperty.Association.GetRoleName(navigationProperty.Association.PropertiesEnd.First(role => role != navigationProperty))));
//.AddAttribute(csdlCodeGenerationNamespace, "GetterAccess", navigationProperty.GetVisibility)
//.AddAttribute(csdlCodeGenerationNamespace, "GetterAccess", navigationProperty.GetVisibility) // Not available in EF 4.0
//.AddAttribute(csdlCodeGenerationNamespace, "SetterAccess", navigationProperty.SetVisibility));
});
@ -414,12 +414,12 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO @@ -414,12 +414,12 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO
.AddAttribute("ConcurrencyMode", scalarProperty.ConcurrencyMode)
.AddAttribute("DefaultValue", scalarProperty.DefaultValue)
.AddAttribute("FixedLength", scalarProperty.FixedLength)
//.AddAttribute(csdlCodeGenerationNamespace, "GetterAccess", scalarProperty.GetVisibility)
//.AddAttribute(csdlCodeGenerationNamespace, "GetterAccess", scalarProperty.GetVisibility) // Not available in EF 4.0
.AddAttribute("MaxLength", scalarProperty.MaxLength)
.AddAttribute("Nullable", scalarProperty.Nullable)
.AddAttribute("Precision", scalarProperty.Precision)
.AddAttribute("Scale", scalarProperty.Scale)
//.AddAttribute(csdlCodeGenerationNamespace, "SetterAccess", scalarProperty.SetVisibility)
//.AddAttribute(csdlCodeGenerationNamespace, "SetterAccess", scalarProperty.SetVisibility) // Not available in EF 4.0
.AddAttribute("Unicode", scalarProperty.Unicode);
}
}
@ -432,7 +432,7 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO @@ -432,7 +432,7 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO
.AddAttribute("Name", complexProperty.Name)
.AddAttribute("Type", string.Concat(csdlAlias, complexProperty.ComplexType.Name))
.AddAttribute("Nullable", false);
//.AddAttribute(csdlCodeGenerationNamespace, "GetterAccess", complexProperty.GetVisibility);
//.AddAttribute(csdlCodeGenerationNamespace, "GetterAccess", complexProperty.GetVisibility); // Not available in EF 4.0
}
}

92
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/IO/DesignerIO.cs

@ -10,6 +10,7 @@ using ICSharpCode.Data.EDMDesigner.Core.EDMObjects.Designer.CSDL.Type; @@ -10,6 +10,7 @@ using ICSharpCode.Data.EDMDesigner.Core.EDMObjects.Designer.CSDL.Type;
using ICSharpCode.Data.EDMDesigner.Core.EDMObjects.Designer.CSDL;
using ICSharpCode.Data.EDMDesigner.Core.EDMObjects;
using ICSharpCode.Data.EDMDesigner.Core.EDMObjects.Designer.Common;
using ICSharpCode.Data.EDMDesigner.Core.EDMObjects.Common;
#endregion
@ -86,49 +87,88 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO @@ -86,49 +87,88 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO
return designerView;
}
public static XElement GenerateNewDesignerViewsFromCSDLView(CSDLView csdl)
public static XElement GenerateNewDesignerViewsFromCSDLView(EDMView edmView)
{
XElement designerView = new XElement("DesignerView", new XAttribute("Name", "View"), new XAttribute("Zoom", 100), new XAttribute("Arrange", true));
foreach (UIEntityType entityType in csdl.EntityTypes)
foreach (UIEntityType entityType in edmView.CSDL.EntityTypes)
{
designerView.Add(new XElement("DesignerType", new XAttribute("Name", entityType.Name), new XAttribute("Top", 0), new XAttribute("Left", 0), new XAttribute("IsExpanded", true)));
}
edmView.EDM.EDMXDesignerDiagrams = designerView.Elements();
return new XElement("DesignerViews", designerView);
}
public static XElement Write(EDM edm)
public static XElement Write(EDMView edmView)
{
if (edm.DesignerProperties == null)
return null;
XElement connectionElement = new XElement(edmxNamespace + "Connection");
XElement designerInfoPropertyElement1 = new XElement(edmxNamespace + "DesignerInfoPropertyElement");
connectionElement.Add(designerInfoPropertyElement1);
foreach (DesignerProperty designerProperty in edm.DesignerProperties)
XElement connectionElement = null;
XElement optionsElement = null;
if (edmView.EDM.DesignerProperties != null)
{
connectionElement.Add(new XElement(edmxNamespace + "DesignerProperty",
new XAttribute("Name", designerProperty.Name),
new XAttribute("Value", designerProperty.Value)));
}
connectionElement = new XElement(edmxNamespace + "Connection");
XElement designerInfoPropertyElement1 = new XElement(edmxNamespace + "DesignerInfoPropertyElement");
connectionElement.Add(designerInfoPropertyElement1);
XElement optionsElement = new XElement(edmxNamespace + "Options");
XElement designerInfoPropertyElement2 = new XElement(edmxNamespace + "DesignerInfoPropertyElement");
optionsElement.Add(designerInfoPropertyElement2);
foreach (DesignerProperty designerProperty in edmView.EDM.DesignerProperties)
{
connectionElement.Add(new XElement(edmxNamespace + "DesignerProperty",
new XAttribute("Name", designerProperty.Name),
new XAttribute("Value", designerProperty.Value)));
}
foreach (DesignerProperty designerProperty in edm.DesignerProperties)
{
optionsElement.Add(new XElement(edmxNamespace + "DesignerProperty",
new XAttribute("Name", designerProperty.Name),
new XAttribute("Value", designerProperty.Value)));
optionsElement = new XElement(edmxNamespace + "Options");
XElement designerInfoPropertyElement2 = new XElement(edmxNamespace + "DesignerInfoPropertyElement");
optionsElement.Add(designerInfoPropertyElement2);
foreach (DesignerProperty designerProperty in edmView.EDM.DesignerProperties)
{
optionsElement.Add(new XElement(edmxNamespace + "DesignerProperty",
new XAttribute("Name", designerProperty.Name),
new XAttribute("Value", designerProperty.Value)));
}
}
return new XElement(edmxNamespace + "Designer")
XElement designerElement = new XElement(edmxNamespace + "Designer")
.AddElement(connectionElement)
.AddElement(optionsElement)
.AddElement(new XElement(edmxNamespace + "Diagrams", edm.EDMXDesignerDiagrams));
.AddElement(optionsElement);
//if (edmView.EDM.EDMXDesignerDiagrams != null)
// designerElement.AddElement(new XElement(edmxNamespace + "Diagrams", edmView.EDM.EDMXDesignerDiagrams));
//else
designerElement.AddElement(new XElement(edmxNamespace + "Diagrams", Write(edmView.DesignerViews)));
return designerElement;
}
private static XElement Write(EventedObservableCollection<DesignerView> designerViews)
{
XElement designerViewsElement = new XElement("DesignerViews");
foreach (DesignerView designerView in designerViews)
designerViewsElement.Add(Write(designerView));
return designerViewsElement;
}
private static XElement Write(DesignerView designerView)
{
XElement designerViewElement = new XElement("DesignerView",
new XAttribute("Name", designerView.Name),
new XAttribute("Zoom", designerView.Zoom));
foreach (ITypeDesigner uiType in designerView)
{
designerViewElement.Add(new XElement("DesignerType",
new XAttribute("Name", uiType.UIType.Name),
new XAttribute("Left", uiType.Left),
new XAttribute("Top", uiType.Top),
new XAttribute("IsExpanded", uiType.IsExpanded)));
}
return designerViewElement;
}
}
}

11
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/IO/EDMXIO.cs

@ -12,6 +12,7 @@ using ICSharpCode.Data.EDMDesigner.Core.EDMObjects.SSDL; @@ -12,6 +12,7 @@ using ICSharpCode.Data.EDMDesigner.Core.EDMObjects.SSDL;
using ICSharpCode.Data.EDMDesigner.Core.EDMObjects.CSDL;
using ICSharpCode.Data.EDMDesigner.Core.EDMObjects.Designer.Common;
using System.IO;
using ICSharpCode.Data.EDMDesigner.Core.EDMObjects.Designer;
#endregion
@ -82,12 +83,12 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO @@ -82,12 +83,12 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO
mslElement))).AddElement(designerElement));
}
public static XDocument WriteXDocument(EDM edm)
public static XDocument WriteXDocument(EDMView edmView)
{
XElement ssdlElement = SSDLIO.WriteXElement(edm.SSDLContainer);
XElement csdlElement = CSDLIO.Write(edm.CSDLContainer);
XElement mslElement = MSLIO.Write(edm);
XElement designerElement = DesignerIO.Write(edm);
XElement ssdlElement = SSDLIO.WriteXElement(edmView.EDM.SSDLContainer);
XElement csdlElement = CSDLIO.Write(edmView.EDM.CSDLContainer);
XElement mslElement = MSLIO.Write(edmView.EDM);
XElement designerElement = DesignerIO.Write(edmView);
return WriteXDocument(ssdlElement, csdlElement, mslElement, designerElement);
}

4
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/IO/SSDLIO.cs

@ -273,8 +273,6 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO @@ -273,8 +273,6 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO
}
role.Properties = properties;
//role.Properties = role.Type.Properties.Where(p => p.Name == principalElement.Element(XName.Get("PropertyRef", ssdlNamespace.NamespaceName)).Attribute("Name").Value).ToEventedObservableCollection();
}
else
{
@ -294,8 +292,6 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO @@ -294,8 +292,6 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO
}
role.Properties = properties;
//role.Properties = role.Type.Properties.Where(p => p.Name == referentialConstraintElement.Element(XName.Get("Dependent", ssdlNamespace.NamespaceName)).Element(XName.Get("PropertyRef", ssdlNamespace.NamespaceName)).Attribute("Name").Value).ToEventedObservableCollection();
}
}
if (isPrincipal)

Loading…
Cancel
Save