Is there an API to read an EDMX file - entity-framework

If I have an .edmx file, is there a way to programmatically access it? I could use XDocument but maybe there is already an api for this?

EDMX file is only for designer. It is even not distributed with your application as is. EDMX contains four components - SSDL, MSL, CSDL and designer information. First three components are extracted during building application and are stored either as resource XML files in the assembly or shipped as external XML files. These files can be read as any other XML files. The only API (present in .NET) which can load them is EntityConnection / MetadataWorkspace in EF.

Library for Object access to edmx
This worked for me fairly well to loop through the entities and generate code tiers from their definitions.. It's really a gold mine for code generation though I wish the built in EF stuff was open source. I can't quite figure out how to create C# objects based on stored procedure results the way EF does.

Related

Set up own DBpedia server to create new mappings

I want to extend the mappings database of DBpedia. Therefore I want to run my own extraction framework instance on my computer. Although the latter is simply done I cannot figure how to feed the framework with newly created mappings.
What I found out so far:
In "config.properties" I can define my own dump-folder.
Some output directory can be defined as well. But what exactly is stored there?
In "Configuration.scala" the url of a mappings page is defined. Does that mean that the framework expects a web page as input which will then be searched for mappings?
My goal is to define some mappings in a plain text file and then tell the extraction framework somehow to use this file as the source of all mappings.
If everything works smoothly I am going to contribute my results to the dbpedia team.
Thanks for your help!
Some output directory can be defined as well. But what exactly is stored there?
The extraction framework outputs N-Triples and N-Quads of all the extracted data, mapping-based and others (see also the files at http://dbpedia.org/Downloads).
In "Configuration.scala" the url of a mappings page is defined. Does that mean that the framework expects a web page as input which will then be searched for mappings?
The Mappings are loaded from http://mappings.dbpedia.org/ which is a wiki for creating and editing mappings. You can get an account and editor rights there and write your own mappings. They will then be loaded when you run the extraction framework (and the data using the mappings will be available in the next release).
My goal is to define some mappings in a plain text file and then tell the extraction framework somehow to use this file as the source of all mappings. If everything works smoothly I am going to contribute my results to the dbpedia team.
You could go ahead and make the framework read the wiki code of mappings from local text files, but I think it would be better to edit them directly on the wiki. Your contribution will be instantly available.

How to get data from XML files into business objects?

I need to build a view in my MVC 2 application that allows a user to upload an XML file. The XML files will conform to an XSD. I need to parse the XML and extract data to populate C# objects that will then be sent off to a web service.
My question is...since I know the exact "format" of the XML files, because of the XSD, is there some easier way to "move" the data in the XML files into my business objects?
I read about some Linq-to-XSD project, but it appears to have been abandoned. Linq-to-XML doesn't seen very helpful, since I still have to "walk" through the entire XML document to get all the data.
Surely there is an easier way?
http://linqtoxsd.codeplex.com/
here is a linq to xsd project on codeplex
http://www.codeproject.com/KB/linq/LINQ_to_XSD.aspx
another on code project
http://www.hanselman.com/blog/LINQToEverythingLINQToXSDAddsMoreLINQiness.aspx
and scott hanselmen talks about this. Between these links(no pun intended) you should be alright

generate Xcdatamodel file from JSON

Is it possible to generate xcdatamodel file from json? Here's how i imagine it would work:
Given a JSON file, going through some program with some custom logic (will probably be written by myself), will generate xcdatamodel file for me to use in XCode project. My question is: is it possible? has anyone ever done it?
I don't think it's possible to create an xcdatamodel file in code. The format isn't documented anywhere and includes layout properties that are only relevant in Xcode's GUI model builder. Those files are also converted to "compiled" .mom files during the build process.
However, you can create an NSManagedObjectModel entirely in code. See this listing for an example: Creating a managed object model in code (Core Data Programming Guide).
NSManagedObjectModel also implements NSCoding, so it should be possible to persist the model you generate to a file using NSKeyedArchiver.

Create model classes for Coredata database in iPhone

I am creating a static library, and the database for the project is created programatically. It doesnot use any xcdatamodel file. I am using core data and I want to generate the model classes for the database. Someone please help me out.
The .xcdatamodel bundle generated by Xcode is an undocumented format, and I know of no way of generating this other than through Xcode's model layout tools. I would not waste your time on reverse engineering this and just create the appropriate model you need in Xcode.
Your Core Data model structure should remain fairly static, so you should just need to do this once. Your application or library can then create and add data to the model programmatically after this point.
When it comes to generation of code that corresponds with your Core Data model, you can have Xcode generate this for you by opening the model, selecting an entity, choosing the File | New File... menu option, and then selecting the Managed Object Class file type. Pick the entities to create source files for you.
Additionally, you might want to look at 'Wolf' Rentzsch's mogenerator project for auto-generating these source files.
Actually Core Data is simply an SDK that uses SQLite3 in the background. So if you want to dynamically create tables then I would just use SQLite3 directly and not use Core Data.

Prefilling Core Data for a read-only application

i am working on an application that displays read-only data i am shipping.
it is more of a book.
It is easy with SQLite but i am not satisfied with the performance and trying to use Core Data.
The issue is with pre-filling Core Data is that it is a hard process.
My question is:
Is it possible to build an assistant iphone application (for me to use) which uses the same data model for pre-filling.
and then take the populated .xcdatamodel file and use it in my original application?
I hope this makes sense :)
Adham
I believe what you're asking is whether you can create a CoreData database upfront and copy it to the iPhone. Is that correct?
This article will help. Here's a quote:
I thus suggest the following five-step process:
Create your data in a comma-separated file, typically placing each row of data (an entity) in a row of the file and separating different columns (its attributes) by commas.
Write a standalone program and copy in your .xcdatamodel file from your main project.
Write code in your new program that parses your comma-separated file and inserts the information into a Core Data persistent store that should be identical to the persistent store in your main project.
Run the program in the Simulator
Copy your data from the Simulator's documents directory into your actual project's bundle.
It's possible, I've done it. I made a desktop application to read from a CSV file using the code here:
http://www.mac-developer-network.com/columns/coredata/may2009/
I just had to alter the way the CSV part worked, and change the model.
I copied and pasted my model from the model builder into the iPhone model. (Clicked on the "grid" area, selected all, copied)
Then I took the sqlite database the desktop app produced (found it in Application Support, in the folder for this application) and put it into the resources folder
I made some code to copy the sqlite into the documents folder on the iPhone (if it wasn't already there) at startup, in the applicationDidLaunch method. It's possible that having it in the resources folder is no good. Even though you're using the database as read only, Core Data may want to write something to it. Not sure about this though..
I used the sqlite file in the documents folder in my Core Data set up.
The desktop and iPhone Core Data sqlite file seem to be exactly the same format. You can transfer one sqlite file to another application (iPhone to iPhone too) as long as they have the same data model. In another application, I used NSXMLParser to create the Core Data sqlite file, then transferred it to another app, both on iPhone using the Simulator.
Yeah, your data source can be whatever you want it to be. The other suggestions are good ones. Create a managed object model (.xcdatamodel) identical to what you want to use in your app. Read in the data from your file, create a new instance of your managed object and populate it from the file. Then save, and dive into the bundle in the iPhone Simulator and copy it over. This has the added bonus of being in exactly the format you need, with all the helpful metadata. Copy your object model and your managed object classes and you're good to go.
Note, though, if you really intend for it to be read-only, and you're using it at install, it will be installed in your finished app's bundle (under Applications/{SIGNATURE}/Myapp.app). If you intend to edit this database or allow a user to save to it, it's a better idea to copy it to the Applications/{SIGNATURE}/Documents directory where your user database lives.