There is, use the Camelot .NET Connector from Bendsoft. You have full CRUD support towards list items and document libraries. It also support join and union without the requirement of you setting up relations inside SharePoint.
Download at: http://www.bendsoft.com/net-sharepoint-connector/
Documentation at: http://www.bendsoft.com/documentation/camelot-net-connector/latest/
A quick example would be this
using System;
using System.Data;
using Camelot.SharePointConnector.Data;
namespace ExampleApplication
{
class Program
{
static void Main(string[] args)
{
var connectionString = @"Server=mysharepointserver.com;User=spuser;Password=******;Database=sitename;Authentication=Ntlm;";
using (var connection = new SharePointConnection(connectionString))
{
try
{
Console.WriteLine("Connecting to SharePoint...");
connection.Open();
using (var command = new SharePointCommand(@"SELECT ID, Name FROM Employees WHERE Role = 'Developer' ORDER BY ID ASC LIMIT 30", connection))
{
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(reader["ID"].ToString().PadRight(30) + " : " + reader["Name"].ToString());
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.WriteLine("Done");
}
}
}
}