-
Notifications
You must be signed in to change notification settings - Fork 4
Fluent Mapping support for Linq to Sql (inspired by Fluent NHibernate) and a Linq to Sql-based ActiveRecord implementation.
License
JeremySkinner/FluentLinqToSql
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Fluent Linq to Sql allows you to define mappings for Linq to Sql entities using a fluent interface rather than attributes or XML. For discussions, documentation and binary releases please visit the CodePlex site: http://fluentlinqtosql.codeplex.com This project was inspired by Fluent NHibernate (http://fluentnhibernate.org). A simple example: public class CustomerMapping : Mapping<Customer> { public CustomerMapping() { Identity(customer => customer.Id); Map(customer => customer.Name); HasMany(customer => customer.Orders).OtherKey(order => order.CustomerId); } } var mappingSource = new FluentMappingSource("Mydatabase"); mappingSource.AddFromAssemblyContaining<CustomerMapping>(); var dataContext = new DataContext("connection-string", mappingSource); var customers = from c in dataContext.GetTable<Customer>() select c; Also included in this project is a Linq to Sql based ActiveRecord implementation: public class Customer { public int Id { get; set; } //assumes public property named "Id" is PK public string Name { get; set; } //all public read/write properties auto-mapped to db cols } //config: ActiveRecordConfiguration.Configure(cfg => { cfg.ConnectToSqlServer("(local)", "mydb", "user", "pass"); cfg.MapTypesFromAssemblyContaining<Customer>(); //lots of other options... }); //usage: using(ContextScope.Begin()) { //in a web app, this can be transparent using a scope per request var customer = new Customer { Name = "Jeremy" }; customer.Save(); } //changes committed on scope disposal using(ContextScope.Begin()) { var cust = Customer.FindById(1); //normal AR-style operations } //testability: var fakeData = new[] { new Customer { Id = 1 }, new Customer { Id = 2 } }; using(Customer.Fake(fakeData)) { //replaces underlying data access with in-memory collection var cust = Customer.FindById(1); } Note that if you want to run the unit tests for this project, you'll fist need to create a local SQL Server database called "FluentLinqToSql". This can be achieved by running BuildDatabase.cmd Copyright Jeremy Skinner http://www.jeremyskinner.co.uk Licensed under the Apache License 2 http://www.apache.org/licenses/LICENSE-2.0.html
About
Fluent Mapping support for Linq to Sql (inspired by Fluent NHibernate) and a Linq to Sql-based ActiveRecord implementation.
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published