hehe, 해킹하지 마세요. 그래서, 아직 완전히 작동하지는 않습니다, 나는 매핑 정보를 동적으로 주입하는 방법을 알아야합니다. 그러나 지금까지는 유망 해 보입니다.
나는이 SQL IQToolkit를 사용하여이 코드
var provider = new DbEntityProvider(new SqlConnection(), new TSqlLanguage(), new ImplicitMapping(), new QueryPolicy());
var exp = provider.GetTable<Hey>().Where(d => d.Born.Month == 1 || (!String.IsNullOrEmpty(d.Yo) && d.Born == DateTime.Now)).Expression;
var sql = ((QueryProvider)provider).GetQueryText(exp);
와
SELECT t0.[Born], t0.[Yo]
FROM [Heies] AS t0
WHERE ((MONTH(t0.[Born]) = 1) OR (NOT (t0.[Yo] IS NULL OR t0.[Yo] = '') AND (t0.
[Born] = @p0)))
를 생성 할 수있었습니다 다시 관하여 저를 생각 나게에 대한 데미안 덕분에 이렇게! 누군가 Linq2Sql을 통해 SQL을 생성하는 비슷한 방법이 있다면 IQToolkit에 대한 의존성을 느슨하게 할 수 있으므로 의견을 듣고 싶습니다.
i는 각 매개 변수에 대한 값을 추출에서 벽에 충돌 한 장난을 많이 후 업데이트
. 원본을 많이 읽은 후에는 쿼리를 실제로 실행하기 위해 멀리 숨겨진 것처럼 보입니다. 그래서 아마 난 그냥 그
var xml = Generate<NewsProperty>();
var mapping = XmlMappingSource.FromUrl(xml);
var ctx = new DataContext(new SqlConnection("..."), mapping);
var query = ctx.GetTable<NewsProperty>().Where(n => n.Date.Year == 2010).OrderBy(n => n.Date).Take(5);
var cmd = ctx.GetCommand(query);
string sql = cmd.CommandText;
foreach (DbParameter param in cmd.Parameters)
{
sql = sql.Replace(param.ParameterName, param.Value.ToString());
}
에 충실해야한다고, 내가 거의 같은 수행이 코드를 내놓았다/
Linq2Sql에보고 한 후 : 글쎄, 난 쿼리가 실행되지 않게하려면 무엇을 추측
Linq2SQL을 사용하지 않을 이유가 없습니다. – VVS
하지만 다른 중요한 이유 중 하나는 중요한 문제는 런타임시 이전에 테이블과 컬럼 이름을 알지 못해 Linq2Sql에 전달할 dbml 스키마를 만들 수 없다는 것입니다. –
명백한 것은 포인트가 없기 때문에 포인트. 내 세부적인 도메인 문제를 해결하는 방법을 묻지는 않습니다. 그 문제는 아주 잘 작동하고 있으며 OrderBy 메서드와 같은 간단한 요소에 대해 식 트리를 사용하고 있습니다. 뭔가에 대해 나는 조금 긴장하지만 그들은 임의적 인 복합체를 얻을 수 있기 때문에 SQL에 파싱하기위한 휠을 다시 발명하는 것은 어쨌든 너무 일반적이라면 대부분 바보처럼 보인다. –