nsabiyera / Oak

Frictionless development for ASP.NET MVC single page web apps. Prototypical and dynamic capabilities brought to C#.
http://amirrajan.github.com/Oak
MIT License
6 stars 7 forks source link

Oak Seed/Gemini as a trimmed down independent class library #9

Closed resafc closed 12 years ago

resafc commented 12 years ago

It seems Oak is carrying some extra possibly dependencies to the core functionality.

Would you consider splitting and trimming Oak into a nice simple class library, which it already is except for the extra Visual Studio project references?

More people could build it and use it as a nice class library reference. I'm very interested in the Oak Seed/Gemini features and found I can use your code nicely if I strip out all the other Web/MVC stuff. I wasn't able to open the Oak project so I made a new class library.

For example, before and after Oak.csproj

==> After reference slashing <== ItemGroup> Reference Include="System" /> Reference Include="System.Configuration" /> Reference Include="System.Core" /> Reference Include="Microsoft.CSharp" /> Reference Include="System.Data" /> /ItemGroup> ItemGroup> Compile Include="Association.cs" /> Compile Include="Changes.cs" /> Compile Include="ConnectionProfile.cs" /> Compile Include="DynamicModel.cs" /> Compile Include="DynamicModels.cs" /> Compile Include="DynamicToJson.cs" /> Compile Include="ElementMetaData.cs" /> Compile Include="Gemini.cs" /> Compile Include="Massive.cs" /> Compile Include="ObjectExtensions.cs" /> Compile Include="Properties\AssemblyInfo.cs" /> Compile Include="Query.cs" /> Compile Include="Seed.cs" /> Compile Include="Validation.cs" /> /ItemGroup> ItemGroup />

==> Before reference slashing <== ItemGroup> Reference Include="EntityFramework"> HintPath>..\packages\EntityFramework.4.1.10331.0\lib\EntityFramework.dll/HintPath> /Reference> Reference Include="Newtonsoft.Json"> HintPath>..\External Assemblies\Newtonsoft.Json.dll/HintPath> /Reference> Reference Include="System.Data.Entity" /> Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" /> Reference Include="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" /> Reference Include="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" /> Reference Include="Microsoft.CSharp" /> Reference Include="System" /> Reference Include="System.Data" /> Reference Include="System.Drawing" /> Reference Include="System.Web.DynamicData" /> Reference Include="System.Web.Entity" /> Reference Include="System.Web.ApplicationServices" /> Reference Include="System.ComponentModel.DataAnnotations" /> Reference Include="System.Core" /> Reference Include="System.Data.DataSetExtensions" /> Reference Include="System.Xml.Linq" /> Reference Include="System.Web" /> Reference Include="System.Web.Extensions" /> Reference Include="System.Web.Abstractions" /> Reference Include="System.Web.Routing" /> Reference Include="System.Xml" /> Reference Include="System.Configuration" /> Reference Include="System.Web.Services" /> Reference Include="System.EnterpriseServices" /> /ItemGroup> ItemGroup> Compile Include="Association.cs" /> Compile Include="BootStrap.cs" /> Compile Include="Changes.cs" /> Compile Include="Controllers\SeedController.cs" /> Compile Include="ConnectionProfile.cs" /> Compile Include="DynamicForm.cs" /> Compile Include="DynamicJsonResult.cs" /> Compile Include="DynamicModel.cs" /> Compile Include="DynamicModels.cs" /> Compile Include="DynamicToJson.cs" /> Compile Include="ObjectExtensions.cs" /> Compile Include="Validation.cs" /> Compile Include="ElementMetaData.cs" /> Compile Include="ParamsModelBinder.cs" /> Compile Include="Massive.cs" /> Compile Include="Gemini.cs" /> Compile Include="Query.cs" /> Compile Include="Seed.cs" /> Compile Include="Properties\AssemblyInfo.cs" /> /ItemGroup> ItemGroup> Content Include="App_Code\OakForm.cshtml" /> */ItemGroup>

amirrajan commented 12 years ago

It already is :-) install-package cambium and install-package seed

here are the links to the nuget packages:

http://nuget.org/packages/cambium http://nuget.org/packages/seed http://nuget.org/packages/gemini

amirrajan commented 12 years ago

Also,if you put oak classes in a separate class library you'll want to make sure to add the InternalsVisibleTo attribute to the Assemblyinfo.cs file. Here are examples: https://github.com/amirrajan/Loam/blob/master/__NAME__.Tests/Properties/AssemblyInfo.cs#L16

amirrajan commented 12 years ago

Wanted to follow up and see if my comments solved help. I'll keep the issue open until then.

resafc commented 12 years ago

Thanks for this tip Amir, it's nice!

Firstly I'd like to see how far I can get without resorting to DDL. I'm also interested in walking the schema, now what play project to dream up...