2009-08-31 29 views
6

Tôi đang sử dụng Mono 2.4 trên dịch vụ lưu trữ web Ubiquity.Sử dụng Microsoft Entity Framework với Microsoft MVC trên Mono 2.4

Tôi đã tạo một applciation đơn giản MVC đơn giản, liên kết here và xác minh rằng nó đã hoạt động bằng tất cả các công cụ của Microsoft.

Tiếp theo, ứng dụng đã được cập nhật để trỏ tới cơ sở dữ liệu máy chủ MySQL đang chạy trên máy chủ Ubiquity của tôi. Ứng dụng hoạt động tốt trên máy tính của Microsoft.

Bây giờ, tôi đang cố gắng triển khai ứng dụng lên máy chủ mono trên Ubiquity.

Tôi đặt System.Web.MVC để nó sẽ CopyLocal = true.

Tôi đã triển khai ứng dụng tới máy chủ đơn.


tôi nhận được lỗi này:

Mô tả: Lỗi phân tích cú pháp một nguồn lực cần thiết để phục vụ yêu cầu này. Xem lại tệp nguồn của bạn và sửa đổi tệp đó để khắc phục lỗi này.

Thông báo lỗi trình phân tích cú pháp: Assembly System.Data.Entity, Version = 3.5.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089 không tìm thấy Thông tin phiên bản: Mono Version: 2.0.50727.1433; ASP.NET Version: 2.0.50727.1433


Tôi đoán các vấn đề có thể là ...

A) Khung Entity không được hỗ trợ trong mono. Tôi cần phải sử dụng một cái gì đó khác hơn là Microsoft Entity Framework.

B) Mã thông báo khóa công khai cho phiên bản đơn âm của System.Data.Entity không phải là "b77a5c561934e089".

C) Có điều gì đó khác đang diễn ra.


Tôi đã thử đặt CopyLocal = true cho tệp System.Entity.Data. Do đó, phiên bản Microsoft của DLL được triển khai đến máy chủ mono của tôi. Tôi nghi ngờ rằng điều này là hợp pháp. Dù sao đi nữa, mà chỉ sản xuất được lỗi sau:

Got a SIGSEGV while executing native code. This usually indicates a fatal error in the mono runtime or one of the native libraries used by your application.


Câu hỏi

Ai đó có thể xác nhận rằng nó có thể sử dụng Entity Framework Microsoft trên Mono? Tôi có lẽ sẽ di chuyển ra khỏi Entity Framework Microsoft, mỗi nhận xét này trong hướng dẫn Microsoft MVC liên kết ở trên ..

"The ASP.NET MVC framework is not tied to the Microsoft Entity Framework. You can create >your database model classes by taking advantage of a variety of Object Relational Mapping >(OR/M) tools including LINQ to SQL, Subsonic, and NHibernate."

Tuy nhiên, vì lợi ích của tính nhất quán, tôi muốn sử dụng Framework Microsoft Entity trên mono nếu điều đó là có thể.

+0

cho bạn thông tin http://www.mono-project.com/EntityFramework – Sharique

Trả lời

3

Bạn cũng nên đặt CopyLocal = true cho assembly System.Data.Entity. Bạn lưu ý rằng bạn đã sao chép System.Web.MVC cục bộ, nhưng chưa bao giờ đề cập rằng bạn đã sao chép System.Data.Entity cục bộ. Bạn cũng có thể cần phải sao chép địa phương bất kỳ của các hội đồng mà System.Data.Entity phụ thuộc vào đó không phải là một phần của Mono.

+0

Có, tôi đã thử điều đó. Trình biên dịch MONO không thành công với thông điệp khó hiểu này. > Có SIGSEGV trong khi thực thi mã gốc. Điều này thường chỉ ra một lỗi nghiêm trọng trong thời gian chạy đơn hoặc một trong các thư viện gốc được ứng dụng của bạn sử dụng. Tôi đoán rằng điều này là do phiên bản Microsoft của System.Data.Entity không được biên dịch để tham khảo các thư viện Mono lõi. – Allen

+0

Vâng, có vẻ như EF không hỗ trợ Mono. Tôi đoán điều đó không đáng ngạc nhiên ... EF là một khuôn khổ lớn và phức tạp. Nó có thể có móc hệ thống và những thứ tương tự khiến nó không thể di chuyển được. Tôi sẽ khuyên bạn nên xem xét các bản đồ OR thay thế, vì MVC không phụ thuộc trực tiếp vào bất kỳ khung công tác ánh xạ OR nào. Bạn thậm chí có thể nhìn vào LINQ to SQL, nếu nhu cầu của bạn rất đơn giản. Đó là một ORM của Microsoft, nhưng nó đơn giản hơn rất nhiều so với EF. – jrista

+0

http://www.mono-project.com/EntityFramework công việc đã được phân tích –

8

tôi có thể xác nhận rằng EntityFramework, Microsoft Chart Controls, và Microsoft Sync Framework KHÔNG làm việc trên mono trên Linux, bất chấp tuyên bố khác với Microsoft và/hoặc MS-nhân viên.

Đó là vì Sync Framwork sử dụng pinvoke với thành phần COM interop, Microsoft Chart Controls có các vấn đề về DirectorySeparator và không gian tên EntityFramwork chưa được chuyển sang mono. Vì vậy, lưu ý rằng khi Microsoft nói "làm việc với mono", họ có nghĩa là "với mono trên Windows". Người ta ước tính rằng cổng EntityFramwork sẽ mất ít nhất 1 năm, cho đến khi đạt đến giai đoạn alpha/beta, tức là nếu ai đó quyết định làm điều đó.

Nhưng không có kế hoạch chính thức nào cho cổng EntityFramework.

EntityFramwork có thể hoạt động trên phiên bản cửa sổ đơn, miễn là bạn đặt bản địa hóa thành true.

Tôi khuyên bạn nên sử dụng nhibernate thay thế.

Cập nhật:

As of Mono 2.11.3, Microsoft has open sourced EntityFramework.
Hence, it is now a part of Mono's distribution.
This version comes with 349 commits, with around 514 file changes.
It includes 15553 insertions and 3717 deletions.

Hai xuống, một để đi.
Tôi đoán điều này có nghĩa là:

BIG THANKS TO MICROSOFT, TẤT CẢ NĂNG LỰC! ! !

+0

Tôi tự sửa lỗi: Điều khiển biểu đồ của Microsoft hoạt động trên Linux, nhưng chỉ khi bạn sử dụng BinaryStreaming. –

+2

Bây giờ EF đã được mở nguồn, tôi đoán rằng có thể làm cho cảng này trở nên dễ dàng hơn? – Martin

+0

@Martin: Nó đã được thực hiện (gosh, đó là 1 tháng của một người đàn ông làm việc)! –

Các vấn đề liên quan