Browse Source

EDMX Generation finished: Additional MSL info for EntitySetMapping generation (EntityTypeMapping/MappingFragment)

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4702 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Philipp Maihart 17 years ago
parent
commit
8847410980
  1. 13
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core.UI/DisplayBinding/EDMDesignerViewContent.cs
  2. 2
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core.UI/UserControls/DesignerCanvas.cs
  3. 11
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/IO/EDMXIO.cs
  4. 33
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/IO/MSLIO.cs
  5. 1
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/ObjectModelConverters/EDMConverter.cs

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

@ -102,19 +102,22 @@ namespace ICSharpCode.Data.EDMDesigner.Core.UI.DisplayBinding @@ -102,19 +102,22 @@ namespace ICSharpCode.Data.EDMDesigner.Core.UI.DisplayBinding
{
edmxElement = null;
EDMWizardWindow wizard = RunWizard(file);
if (wizard.DialogResult == true)
_edmView = new EDMView(wizard.EDMXDocument, readMoreAction);
if (wizard.DialogResult == true)
{
_edmView = new EDMView(wizard.EDMXDocument, readMoreAction);
//wizard.EDMXDocument.Save("C:\\temp\\test.edmx");
}
}
EntityTypeDesigner.Init = true;
if (edmxElement != null && edmxElement.Element("DesignerViews") != null)
DesignerIO.Read(_edmView, edmxElement.Element("DesignerViews"), entityType => new EntityTypeDesigner(entityType), complexType => new ComplexTypeDesigner(complexType));
EntityTypeDesigner.Init = false;
VisualHelper.DoEvents();
//VisualHelper.DoEvents();
_designerCanvas = DesignerCanvas.GetDesignerCanvas(this, _edmView, _edmView.DesignerViews.FirstOrDefault());
_scrollViewer.Content = _designerCanvas;

2
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core.UI/UserControls/DesignerCanvas.cs

@ -74,6 +74,8 @@ namespace ICSharpCode.Data.EDMDesigner.Core.UI.UserControls @@ -74,6 +74,8 @@ namespace ICSharpCode.Data.EDMDesigner.Core.UI.UserControls
designerCanvas.Loaded +=
delegate
{
VisualHelper.DoEvents();
foreach (TypeBaseDesigner typeBaseDesigner in designerView)
typeBaseDesigner.DrawRelations();
designerCanvas.Zoom = designerView.Zoom;

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

@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
using System;
using System.Linq;
using System.Xml.Linq;
using ICSharpCode.Data.Core.Common;
using ICSharpCode.Data.EDMDesigner.Core.EDMObjects;
using ICSharpCode.Data.EDMDesigner.Core.EDMObjects.SSDL;
using ICSharpCode.Data.EDMDesigner.Core.EDMObjects.CSDL;
@ -47,11 +48,15 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO @@ -47,11 +48,15 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO
{
SSDLContainer = ssdlContainer,
CSDLContainer = MSLIO.IntegrateMSLInCSDLContainer(csdlContainer, ssdlContainer, edmxRuntime),
DesignerProperties = edmxDesigner.Element(XName.Get("Connection", edmxNamespace.NamespaceName)).Element(XName.Get("DesignerInfoPropertySet", edmxNamespace.NamespaceName)).Elements(XName.Get("DesignerProperty", edmxNamespace.NamespaceName)).Select(e => new DesignerProperty { Name = e.Attribute("Name").Value, Value = e.Attribute("Value").Value }),
EDMXDesignerDesignerProperties = edmxDesigner.Element(XName.Get("Options", edmxNamespace.NamespaceName)).Element(XName.Get("DesignerInfoPropertySet", edmxNamespace.NamespaceName)).Elements(XName.Get("DesignerProperty", edmxNamespace.NamespaceName)).Select(e => new DesignerProperty { Name = e.Attribute("Name").Value, Value = e.Attribute("Value").Value }),
EDMXDesignerDiagrams = edmxDesigner.Element(XName.Get("Diagrams", edmxNamespace.NamespaceName)).Elements(XName.Get("Diagram", edmxNamespace.NamespaceName))
};
if (edmxDesigner != null)
{
edm.DesignerProperties = edmxDesigner.Element(XName.Get("Connection", edmxNamespace.NamespaceName)).Element(XName.Get("DesignerInfoPropertySet", edmxNamespace.NamespaceName)).Elements(XName.Get("DesignerProperty", edmxNamespace.NamespaceName)).Select(e => new DesignerProperty { Name = e.Attribute("Name").Value, Value = e.Attribute("Value").Value });
edm.EDMXDesignerDesignerProperties = edmxDesigner.Element(XName.Get("Options", edmxNamespace.NamespaceName)).Element(XName.Get("DesignerInfoPropertySet", edmxNamespace.NamespaceName)).Elements(XName.Get("DesignerProperty", edmxNamespace.NamespaceName)).Select(e => new DesignerProperty { Name = e.Attribute("Name").Value, Value = e.Attribute("Value").Value });
edm.EDMXDesignerDiagrams = edmxDesigner.Element(XName.Get("Diagrams", edmxNamespace.NamespaceName)).Elements(XName.Get("Diagram", edmxNamespace.NamespaceName));
}
readMoreAction(edmx);
return edm;
}

33
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/IO/MSLIO.cs

@ -20,6 +20,39 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO @@ -20,6 +20,39 @@ namespace ICSharpCode.Data.EDMDesigner.Core.IO
public class MSLIO : IO
{
#region Methods
public static XDocument GenerateTypeMapping(XDocument mslDocument)
{
XElement mappingElement = mslDocument.Element(XName.Get("Mapping", mslNamespace.NamespaceName));
if (mappingElement == null || mappingElement.IsEmpty)
return null;
XElement entityContainerMappingElement = mappingElement.Element(XName.Get("EntityContainerMapping", mslNamespace.NamespaceName));
if (entityContainerMappingElement == null || entityContainerMappingElement.IsEmpty)
return null;
foreach (XElement entitySetMapping in entityContainerMappingElement.Elements(mslNamespace + "EntitySetMapping"))
{
string name = entitySetMapping.Attribute("Name").Value;
string storeEntitySet = entitySetMapping.Attribute("StoreEntitySet").Value;
string typeName = entitySetMapping.Attribute("TypeName").Value;
XElement entityTypeMapping = new XElement(mslNamespace + "EntityTypeMapping", new XAttribute("TypeName", string.Format("IsTypeOf({0})", typeName)));
XElement mappingFragment = null;
entityTypeMapping.Add(mappingFragment = new XElement(mslNamespace + "MappingFragment", new XAttribute("StoreEntitySet", storeEntitySet)));
foreach (XElement property in entitySetMapping.Elements())
mappingFragment.Add(property);
entitySetMapping.RemoveAll();
entitySetMapping.AddAttribute("Name", name);
entitySetMapping.Add(entityTypeMapping);
}
return mslDocument;
}
public static CSDLContainer IntegrateMSLInCSDLContainer(CSDLContainer csdlContainer, SSDLContainer ssdlContainer, XElement edmxRuntime)
{

1
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.EDMDesigner.Core/ObjectModelConverters/EDMConverter.cs

@ -71,6 +71,7 @@ namespace ICSharpCode.Data.EDMDesigner.Core.ObjectModelConverters @@ -71,6 +71,7 @@ namespace ICSharpCode.Data.EDMDesigner.Core.ObjectModelConverters
XDocument csdlXDocument = XDocument.Load(filenameRump + ".csdl");
XDocument mslXDocument = XDocument.Load(filenameRump + ".msl");
mslXDocument = MSLIO.GenerateTypeMapping(mslXDocument);
XNamespace edmxNamespace = "http://schemas.microsoft.com/ado/2007/06/edmx";

Loading…
Cancel
Save