문제

나는 여러 번 LINQ 및 기타 CLR 언어 별 내장 검색, 정렬 및 기타 기능을 테이블, 컬렉션 및 객체에 대해 'SQL Server'를 가지고 있거나 'CLR 서버'라고 부르지 않는다고 생각했습니다. (OOP 서버뿐만 아니라 CLR 3.5) CLR (또는 COM) DLL이 될 것입니다. 사용자가 바로 린 칭을 허용하는 데이터를 노출시킵니다. 이로 인해 많은 사람들이 다른 두 가지 언어로 발전하는 시간 등을 많이 절약 할 수 있습니다. 나는 (신 금지) SQL을 버리라고 말하지 않고, 그것은 단지 내 마음을 여러 번 건너고, 나는 지역 사회가 말하는 것을들을 수 있다고 생각했다.

이 아이디어는 물론 완전히 새로운 것은 아니며 Foxpro에는 DB가 있습니다 (내 아이디어와 다릅니다). 그러나 외부가 DLL에 액세스 할 수있는 순수한 CLR .NET 3.5+ DB에 대해 이야기하고 있습니다. SQL 쿼리를 생성해서는 안되며 전체 시스템이 다르게 작동해야합니다.

삽입 업데이트 및 삭제를위한 추가 LINQ 키워드가 있어야하지만 모두 'LINQ 스타일'이어야합니다.

나는 Microsoft가 성과를 고려하고 더 많은 IDK를 갖기 전에 이것에 대해 생각해 보았을 것이라고 100% 확신합니다. 귀하의 의견을 들어 보겠습니다. 오늘 개인적으로 .NET 3.5-4.0을 사용하면 컬렉션 처리, 확장 방법 등이 있다면. 서버에서 모든 데이터를 객체로 취급하는 것은 정말 멋질 수 있습니다 (코딩과 관련하여 다시, Donno는 성능에 관한 것입니다).

뭐라고 말해? 이 질문이 올바른 장소에서 묻기를 바랍니다. 사과를 미리 받아들이십시오. 여기에 속하지 않으면 의견을 제시하고 삭제하겠습니다.

이 열악한 예에 대해 죄송하지만 아이디어를 얻으십시오.

Module Module1

    Sub Main()
        ClrServer.MyDataBase.ObjectContext.MyTables.Add(New ClrServer.MyDataBase.MyTable)
        Try
            ClrServer.MyDataBase.SaveChanges()
        Catch e As ClrServer.UpdateException
        End Try

        Dim x = From a In ClrServer.MyDataBase.ObjectContext.MyTables Where a IsNot Nothing
        Dim y = From a In ClrServer.MyDataBase.ObjectContext.MyOtherTables Where a IsNot Nothing
        Dim z = From a In ClrServer.MyDataBase.ObjectContext.MyFreakingTables Where a IsNot Nothing

        'So far no access to server made, the local maintainer hold up the request
        'Connection to server is going to be made in the next line
        'and previous 3 queries will be loaded then.
        ClrServer.MyDataBase.ObjectContext.Execute()
    End Sub

End Module

'This is server side code, there should be internal ways to connect to real data when executing.
Namespace ClrServer
    Namespace MyDataBase
        Public Class MyTable

        End Class


        Module ObjectContext
            Public MyTables As List(Of MyTable)
            Public Sub SaveChanges()

            End Sub
        End Module
    End Namespace
End Namespace

그런 다음 네임 스페이스를 가져 와서 ObjectContext 인라인을 사용할 수 있습니다. "나쁜 코드"cuz는 나쁜 코드라고 말하지 마십시오. 나는 당신이 내가 의미하는 바를 볼 수 있도록 stackoverflow wysiwyg 편집기에 불쌍한 pseude 예제 만 썼습니다.

도움이 되었습니까?

해결책

객체 데이터베이스를 설명하고 있습니다. 여기 하나가 있습니다 :

DB4O C# 데이터베이스

  • .NET 2 및 3.5 기본 (소형 프레임 워크 포함)
  • 100% 객체 지향 데이터베이스, 객체 관계 매핑 없음
  • 제로 admin 환경에서 내장 용도로 설계되었습니다
  • 오픈 소스 및 GPL에 따라 무료

http://www.db4o.com/s/csharpdb.aspx

다른 팁

당신은 개발자라고 추측하겠습니다 :)

데이터베이스의 'SQL'팁 만 볼 수 있습니다. 그러나 언어 및 프로그래밍 가능성 부분은 데이터베이스의 정문 일뿐입니다. 실제로 고급 RDBM을 정의하는 것은 'ities'입니다.

  • 고 가용성
  • 재난 회복 가능성
  • 확장 성

데이터베이스는 이들에 대한 스토리를 더 잘 가지고 있거나 SQL Server가 주로 경쟁하기 위해 대상이되는 '미션 크리티컬'시장에서 경쟁 할 수 없습니다 (예 : MSSQL-DB2-Oracle Triumvirate 시장). BTW, 당신은 질문을 SQL-Server로 표시 했으므로, 더 일반적인 'RDBMS 대 OODB'경로를 다루는 것과는 달리 이것에 대해 구체적으로 대답 할 수 있습니다.

이제 이러한 고급 요구 사항을 방정식에서 벗어나면 빠른 검색을 수행하고 '데이터베이스의 미래'차트에 대한 주장을하는 무수한 프로젝트를 찾을 수 있습니다.

그렇다고해서 상황이 그 방향으로 움직이지 않는다는 의미는 아닙니다. 얼음은 SQL 2005와 CLR 통합으로 깨졌습니다. SQL 2005에서 CLR은 새로운 애플리케이션을 사용할 수있는 기능 이었지만 내부는이를 기반으로하지 않았습니다. 분명히, 아무도 미션 크리티컬 플랫폼이 그 테스트되지 않은 기능에 의존하기를 원하지 않을 것입니다. SQL 2008에서 사물이 조금 더 이동했을 때 일부 시스템 데이터 유형은 CLR : 지리 및 지리 공간 데이터 유형을 기반으로 배송되었습니다.

반면에 Anders Hejlsberg는 C# 3.0에서 수행 한 작업은 진정으로 혁명적 이었기 때문에 언어의 많은 요소가 합쳐졌습니다. 너무 일관되게 새로운 추상화를 제공하려면 Linq. 프로그래밍 언어에서 발생하는 패러다임의 변화가 스택을 데이터베이스로 향하게할까요? 나는 확실하다. 시간이 걸릴까요? 내 베팅은 적어도 2 개의 릴리스입니다.

깔끔하지만 객체 모델과 데이터 저장소 사이에 추가 추상화 계층이 있으면 많은 최적화가 가능합니다. SQL 레이어를 제거하면 재창조 해야하는 쿼리로 누르면 SQL Server 내부에 많은 멋진 물건이 있습니다. 언젠가는 그것이 일어날 것이라고 확신하지만 오늘 이런 일을 정당화하기에 충분한 혜택이 있는지 확실하지 않습니다 ... JMHO ...

작업에 적합한 도구를 사용합니다.

객체 데이터베이스에 대해서는 아무것도 없지만 SQL은 쿼리를 기능적 방식으로 표현하는 데 매우 능숙합니다. 이를 효과적으로 수행하려면 데이터가 정기적이어야하므로 SQL Server가있는 이유입니다.

효과적으로 SQL은 효율적인 방식으로 경이로운 대형 데이터 세트를 저장하고 검색하는 작업에 적합한 도구로보고 있습니다. 당신은 이것을 좋은 도구와 매핑과 결합하고 이론적으로 두 세계의 최고로 끝나야합니다.

추신 : SQL 2005는 이미 기본적으로 .NET 데이터 유형 및 CLR 절차를 지원하므로 미래에 수용되면 SQL Server의 멋진 기반을 활용하는 객체 데이터베이스가있을 수 있습니다.

LINQ에서 SQL은 .NET Framework에서 제공되는 O/RM (Object Relational Mapping) 구현이며 .NET 클래스를 사용하여 관계형 데이터베이스를 모델링 할 수 있습니다. 그런 다음 LINQ를 사용하여 데이터베이스를 쿼리하고 데이터를 업데이트/삽입/삭제할 수 있습니다.

http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top